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)。

posted @ 2018-11-11 22:14  秦唐  阅读(5566)  评论(0编辑  收藏  举报