Image Borders&角落C ++

时间:2014-10-16 18:33:41

标签: c++ image opencv

我正在开发openCV 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);

但现在我的图像边框有问题;如果鼠标位于图像边界或角落之一附近的像素上,则我有一个例外,因为col&行(块大小变得比现有图像大)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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);