原图:
尺寸:240 × 150
灰度化:
1. 程序中输出像素点的灰度值:
2. 用工具取得的灰度值:
按照如下的坐标(图像处理坐标系)
得到的灰度值:
(35,82)
(82,35)
换算后分别是125(差两个像素值应该是误差)和178与之前的相对应
--------------------------------------------------------------------------------------------------
但是在【画图中】我们取的(35,82),底下却显示(82,35)
这是因为windows的坐标系是这样的:
--------------------------------------------------------------------------------------------------
结论1:
opencv严格按照数字图像的坐标系取像素点
当你创建一个2*5的数组array[2][5]的时候
1 2 3 4 5
6 7 8 9 0
转成图像便是width*height=5*2的图像
要注意的就是这里。
一般我们会首先取得图像,很容易会这样写
w = size.width = 5
h = size.height = 2
然后遍历
int val = img.at<uchar>(w,h)
重点:但是img中最后一个是img.at<char>(1,4),而不是img.at<char>(4,1),这里很容易就会发生溢出,这问题贼烦
结论2:
opencv不要使用size.width和size.height(很容易去对应x,y),改为使用row(对应x)和col(对应y)。