opencv是一个开源的跨平台计算机视觉库,其用C++语言编写,主要接口也是C++语言,自己平时做图像处理相关内容是有用到一些简单的操作,调用的处理接口较为简单,但久了不用又会遗忘,所以在这篇博客里记录下来。

OpenCV图片的存取

Mat srcImage = imread("srcImage.bmp");
imwrite("图片.bmp",srcImage);
imshow("图片名",srcImage);
waitKey();

注意非bmp格式图片的可能存在数据的压缩,会导致图片本身的数据有很小的误差,视频的生成同样存在压缩;图像的显示需要使用waitKey();不然不能停留显示,图片像素数据的提取与存储,使用img.data[ ]比img.at < Vec3b >(i,j) [0/1/2]要高效快速得多。

OpenCV视频的存取

VideoCapture capture;
capture.open("1.avi");
capture>>srcImage;
VideoWriter writer("1.avi", CV_FOURCC('M', 'P', '4', '2'), 60.0, Size(1600, 600));
writer << srcImage;

注意视频的生成同样存在数据的压缩,另外,视频是三通道的,不存在从视频中取出一张图片,而这张图片为灰度图片的情况。

OpenCV在感兴趣区域设置掩码图像

Mat srcImage=imread("1.bmp");
Mat logoImage=imread("2.bmp");
Mat imageROI=srcImage(Rect(0,0,logoImage.cols,logoImage.rows));
Mat mask=imread("2.bmp",0);
logoImage.copyTo(imageROI,mask);
imshow("Image",srcImage);

通过代码在srcImage图片中的左上角0,0坐标设置logoImage图像

OpenCV常用易忘函数

cvtColor(Image,Image,CV_BGR2GRAY);      // 颜色空间转换函数 
Mat srcImage(Size(800,600),CV_8UC3,Scalar::all(0))      // 构造图片
A.copyTo(B);                    // 把图像A复制到图像B
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐