opencv图像坐标

原图:

 

尺寸: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)。

原文地址:https://www.cnblogs.com/qintang/p/9943905.html