2015-02-24 312 views
0

下圖僅包含閾值後的黑白像素。我在這張圖片的頂部畫一個灰色的旋轉矩形。現在我想對這個旋轉的矩形內的黑色像素的數量進行計數,但不包括白色矩形 - 矩形外的黑色像素(即白色矩形內的像素的數量)。opencv:如何填充區域外的區域/邊緣

這樣做的最佳方法是什麼?我應該用白色像素填充白色矩形外的區域嗎?歡迎任何建議。

enter image description here

回答

1

如果你知道你要搜索的區域的角度和大小,你可以砍掉它使用這種技術的圖像:

How to straighten a rotated rectangle area of an image using opencv in python?

(我知道它的Python的,但有一個C++當量)

EDIT

您可以使用此代碼返回並打印出每個像素的值,讓你可以在樣你得到回值的想法(應該僅僅是0和1/255,如果二值圖像)

for(int i=0; i<img.rows; i++) 
    for(int j=0; j<img.cols; j++) 
     std::cout<<"Value: "<<static_cast<int>(gray_image.at<uchar>(i,j)); 

一旦你得到這些值可能會做一個計數器,將增加每次像素的值超過一定的閾值

+0

您是否看到灰色旋轉矩形和白色矩形之外有一些黑色像素?在計算黑色像素的數量時,我想排除它們 - 這是我的關鍵問題 – chesschi 2015-02-24 10:57:53

+0

使您的矩形變小5%左右,以便它對圖像的白色部分很緊 – Aphire 2015-02-24 11:03:12

+0

或者準確地說,減少邊直到邊緣沒有黑色像素爲止,您可以使用我的答案中的代碼檢查邊緣像素,只需更改它,以便從0-img.width,0- img.length,img.width - img.length和img.lenth-img.width – Aphire 2015-02-24 11:06:04