最近参加了同学的项目,分配的任务是实时监测两张图片的差异。开始第一天的学习——读取图像并对他进行灰度化处理。
1.我查询了网上的资料发现读取图像有两种常用的方法,虽然目前还不精通期中原理,但先拿来使用吧。
一种是Mat,一种是IplImage,有兴趣的可以看看以下链接
https://blog.youkuaiyun.com/piaoxuezhong/article/details/59113192。
2.关于灰度化简而言之就是把用RGB(红绿蓝)表示的图像转化为灰色表示图像,而OpenCV有直接的函数可以调用。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat src, dst;
//记得两个\\表示转义
src = imread("D:\\PicPro\\PictureLib\\girl.jpg",1);
imshow("yuantu", src);
if (src.empty())
{
cout << "nothing!";
system("pause");
}
cvtColor(src, dst, CV_RGB2GRAY);
imshow("end1", dst);
//第二种方法
IplImage *img=cvLoadImage("D:\\PicPro\\PictureLib\\girl.jpg",1);
CvSize size = cvSize((*img).width, (*img).height);
IplImage * image=cvCreateImage(size,img->depth,1);
cvCvtColor(img, image, CV_BGR2GRAY);
cvShowImage("end2", image);
waitKey(0);
return 0;
}
总结:实现了第一个demon,很开心。