OpenCV实验系列之基本图片操作
注意:以下内容根据opencv官网提供的教程结合个人理解所得,仅是个人学习笔记,可能存在错误或偏差,欢迎指正。
读写及显示图片
Mat img = imread(filename)//读取图片,图片格式判定取决于最先的几个字节
Mat img = imread(filename, IMREAD_GRAYSCALE);//以灰度图方式读取图片
imwrite(filename, img);//写入图片(写入图片的格式取决于文件名的拓展名)
读写像素值
//读取单通道像素值
Scalar intensity = img.at<uchar>(y, x);
Scalar intensity = img.at<uchar>(Point(x, y));//注意这里x,y位置是有区别的!
//读取BGR三通道像素值
Vec3b intensity = img.at<Vec3b>(y, x);
uchar blue = intensity.val[0];
uchar green = intensity.val[1];
uchar red = intensity.val[2];
//写入像素值
img.at<uchar>(y, x) = 128;
//将图片全部赋值为0
img = Scalar(0);
//显示图片
namedWindow("image", WINDOW_AUTOSIZE);
imshow("image", img);
选取图片特定区域
Rect r(10, 10, 100, 100);
Mat smallImg = img(r)
转换图片格式
//将图片转由彩图换成灰度图
cvtColor(img, grey, COLOR_BGR2GRAY);
//转换图片数据格式
src.convertTo(dst, CV_32F);