2014-10-16 142 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