最近遇到图像的各种操作,有个点一直和MATLAB中的图像有点混了,特做个标记
一、图像坐标系
Mat image = imread("aaa.bmp");
imshow("aaa",image);
Mat img;
img = image(Rect(200, 0, 160, 90));
imshow("aaa",image);
Mat img;
img = image(Rect(200, 0, 160, 90));
imshow("bbb",img);
注意:坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线;Y轴为图像矩形左边的那条垂直线。该坐标体系在诸如结构体Mat,Rect,Point中都是适用的。
二、彩色图像存储顺序
matlab: 以RGB为顺序
获取R通道:img = image(:,:, 1);
获取G
通道:img = image(:,:,2
);
获取B
通道:img = image(:,:,3
);
opencv:以BGR为顺序
获取各通道图像可以使用split()函数进行通道分离
split(image, channels);
blurImg = channels.at(0);
greenImg = channels.at(1);
redImg = channels.at(2);
三、数据的读取
在使用image.at<TP>(x1, x2)来访问图像中点的值的时候,x1并不是图片中对应点的x轴坐标,而是图片中对应点的y坐标。因此其访问的结果其实是访问image图像中的Point(x2, x1)点,即与image.at<TP>(Point(x2, x1))效果相同。
// Mark 一下,待续