买了一个opencv的视频观看,记录了一些基础知识,担心遗忘抄写在这。视频资料我会上传分享给路过的朋友们,上传后我会把链接贴出来。
- 图像的加载(cv::imread):加载图像成为一个Mat型,有三个参数。第一个参数表示要加载的图像名称,第二个参数表示加载成什么类型的图像。第二个参数又包含三个参数(IMREAD_UNCHANGED(<0)加载原图像不做任何改变,IMREAD_GRASCALE(0)表示把原图作为灰度图像加载进来,IMREAD_COLOR(>0)表示把原图作为RGB图像加载进来)。
- 图像的颜色修改(cv::cvtcolor(src,gray_src,COLOR_BGR2GRAY):第一个参数为要转换的图像,第二个参数为转换后输出的图像,第三个参数表示转换类型,比如COLOR_BGR2HLS 表示将RGB的图像转换成HLS型;COLOR_BGR2GRAY 表示将RGB类型转换成GRAY型。
- 图像的保存(imwrite("路径+扩展名",src)
- 图像的显示(显示在windows窗口):
- 第一步先定义一个窗口(cv::namedwindows):它是由opencv自主创建与释放,无需销毁,函数为namedwindows(“窗口名”,WINDOW_AUTOSIZE)WINDOW_AUTOSIZE表示根据图像大小调整窗口大小,WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
- 第二个步将图像显示在窗口上(cv::imshow):imshow("窗口名",src)
- 图像的像素处理:这个函数是将像素转换到0-255的范围,函数为saturate_cast<uchar>(要转换的像素),saturate_cast<uchar>(-100)返回0;saturate_cast<uchar>(288)返回255;saturate_cast<uchar>(100)返回100即小于0的返回0,大于255的返回255,在0-255之间的返回着个值。
- 创建一个图像:Mat::zeros(src.size(),src.type())创建一个与已知图像src大小尺寸一样的图像,但是像素为0
- 获取图像的像素指针:Mat.ptr<uchar>(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。
- 获取像素值:(1)单通道的像素-src.at<uchar>(row,col)。(2)三通道像素-src.at<Vec3b>(row,col)[0],[]内代表通道数,[0]代表第一通道,[1]代表第二通道,[2]代表第三通道。注:Vec3b对应的三通道顺序为blue、green、red的uchar类型,Vec3f对应的是三通道float类型数据。把CV_8UC1转换到CV32F1实现方法如下:src.convertTo(dst,CV_32F).
- 获取图像的通道数:Mat src.channels-获取src的通道数