2014-10-16 83 views
-1

我工作的OpenCV的C++项目,我的项目图片边框和角C++

部分要求在图像与我的鼠标的任何像素点,得到它的X和Y坐标,那么,我应该复制8 * 8该像素周围的像素块用于为该块应用一些图像处理功能。

这是我的代码,需要8 * 8块周围像素的一部分:

cv::Mat foo = Mat(8, 8, CV_8UC3); 
foo = img3.colRange(x-4, x + 4).rowRange(y-4, y + 4); 

但现在我有一个图像的边界问题;如果鼠标位于图像边框或边角附近的某个像素上,则由于列的范围(块大小比现有图像大),因此存在例外。

我该如何解决这个问题?

回答

0

只需夹住x和y的值,所以,总是有他们周围的4个像素:

x = max(4, min(img3.cols - 5, x)) 
y = max(4, min(img3.rows - 5, x)) 

cv::Mat foo = img3.colRange(x-4, x + 4).rowRange(y-4, y + 4); 
+0

现在的工作,感谢你的回答 – 2014-10-16 23:14:38