用OpenCV建立一幅只有几个像素且值可以自定义的图像,并输出保存到硬盘的方法!
来源:互联网 发布:淘宝名不虚传 生意参谋 编辑:程序博客网 时间:2024/06/10 05:19
有时候,我们在看OpenCV源码的时候,需要一幅非常简单的图像来测试(图像简单咱们可以做人工推算,然后与机器运算的结果对照),这个时候就需要用OpenCV建立一幅只有几个像素且值可以自定义的图像,并保存到硬盘。为什么要保存到硬盘呢?因为咱们还要在MATLAB中做验证啊!为啥不用MATLAB生成呢?原因可见我写的博文:
http://blog.csdn.net/wenhao_ir/article/details/51218032
首先用WIN7的画图功能建立一幅指定像素点数的图像,保存为XXX.jpg,然后放入相关工程文件下,接下来在OpenCV中建立如下关键代码:
PS:下面的这个代码只是C代码,我于2016-6-17日在此博文中补充了C++版本的代码!
#include <opencv2/opencv.hpp> #include <opencv2/legacy/compat.hpp> #include <fstream>using namespace std; #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") int main(){// 从文件中加载原图 IplImage *pSrcImage = cvLoadImage("pout1.jpg", CV_LOAD_IMAGE_UNCHANGED); //创建输出的图像IplImage *pOutImage_8U_1 = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U,1);IplImage *g_pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1); cvCvtColor(pSrcImage, g_pGrayImage, CV_BGR2GRAY); cvConvertScale(g_pGrayImage,pOutImage_8U_1);//相当于复制图像CvScalar s2;s2.val[0]=50;cvSet2D(pOutImage_8U_1,0,0,s2);s2.val[0]=200;cvSet2D(pOutImage_8U_1,0,1,s2);s2.val[0]=220;cvSet2D(pOutImage_8U_1,0,2,s2);s2.val[0]=100;cvSet2D(pOutImage_8U_1,0,3,s2);s2.val[0]=200;cvSet2D(pOutImage_8U_1,0,4,s2); cvSaveImage("1234.jpg",pOutImage_8U_1);double watch_pOutImage_8U_1[100];int i;for(i=0;i< 5;i++){watch_pOutImage_8U_1[i]=cvGet2D(pOutImage_8U_1,0,i).val[0]; }cvSaveImage("pOutImage_8U_1.jpg",pOutImage_8U_1);//这里记得释放相关资源,由于不是正规程序,这里就不写资源的释放了哈return 0;}
运行完成之后在工程文件夹下就生成了pOutImage_8U_1.jpg,用MATLAB读入这幅图像,其值也为[50 200 220 100 200]
2016-6-17日补充C++代码:
在C++中cvSaveImage换成了imwrite,原型如下:
C++: bool imwrite(const string& filename, InputArray image, const vector<int>& params=vector<int>())
C: int cvSaveImage(const char* filename, const CvArr* image)
可见,imwrite比cvSaveImage多了一个参数,下面说下这个参数:
参数params是用来设置对应图片格式的参数的,因为一般情况下这些图片格式都是经过了压缩的,这里就是设置这些压缩参数来控制图片的质量。该参数是一个vector<int>类型,里面分别存入paramId_1, paramValue_1, paramId_2, paramValue_2, ... 也就是说存入一对属性值。如果不设置该参数的话,则程序会自动根据所保存的图像格式采用一个默认的参数。
下面给出我实际使用中的代码:
cv::imwrite("flower3_pepper.jpg",resultImage);//其中resultImage是MAT类型!
PS:MATLAB中也是使用imwrite来保存图像哦!OpenCV是在向MATLAB靠拢?
欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号248787278
- 用OpenCV建立一幅只有几个像素且值可以自定义的图像,并输出保存到硬盘的方法!
- opencv 保存灰度图像的像素值
- opencv 保存灰度图像的像素值
- Opencv中将图片的像素值保存到vector容器中,并保存为文本文档
- OpenCV 获取像素值的几个方法
- opencv2改变图像像素大小到指定像素并保存改变后的图像
- 【OpenCV】车牌定位RGB转HSV图像并打印输出各像素点的值
- OpenCV应用笔记】(彩色/灰度)图像像素值读取并保存到txt文件
- OpenCV读取RGB图像像素值,并保存到txt中
- 用opencv读取图像的每个像素值,鼠标点击获取每一个点,并显示像素
- OPENCV系列(一)读取图像中任意点的像素值,并显示坐标
- OpenCV遍历彩色图像、灰度图像的像素值方法
- Opencv获取并改变图像的像素值
- Opencv获取并改变图像的像素值
- OpenCV访问图像像素的方法
- 【OpenCV】OpenCV中获取图像的像素点并处理
- opencv获取图像像素值的两种方法
- opencv读取图像,并获得像素值,图像高度和宽度不是4的倍数
- Java Web基础知识之Filter:过滤一切你不想看到的事情
- Android+git+hudson+gradle持续集成
- openHevc学习笔记:工程代码基本结构
- 基于opencv和QT的瞳孔精确检测程序
- android studio更新2.0后出现的Gradle sync failed: Unknown host等gradle问题解决办法
- 用OpenCV建立一幅只有几个像素且值可以自定义的图像,并输出保存到硬盘的方法!
- 使用SpringMVC和Mybatis
- 位运算符—&
- 一个不错的shell 脚本教程 入门级
- Java---IO加强(1)
- UINavigationBar的Back按钮手势失灵解决办法
- 图解密码技术笔记(八)密钥——秘密的精华
- Resource Type
- python解析pcap转储为sqlite