如何计算roi opencv中的像素
how to count the pixels in roi opencv
我有一枚硬币的裁剪图像。我已经应用了面具,所以我可以专注于硬币本身。接下来是我要计算这枚硬币的像素数。我已经阅读过类似的帖子,但它们似乎对我不起作用。
这是原图:
http://s30.postimg.org/eeh3lp99d/IMG_20150414_121300.jpg
和裁剪的硬币:
http://s3.postimg.org/4k2pdst73/cropped.png
这是我目前的代码:
//get the number of pixels of the coin
//STEP 1: CROP THE COIN
//get the Rect containing he circl
Rect rectCircle(center.x - radius, center.y - radius, radius * 2, radius * 2); //obtain the image ROI:
Mat roi(src_gray, rectCircle);
//make a black mask, same size:
Mat mask(roi.size(), roi.type(), Scalar::all(0));
//with a white,filled circle in it:
circle(mask, Point(radius, radius), radius, Scalar::all(255), -1);
//combine roi and mask:
cv::Mat coin_cropped = roi & mask;
如何计算裁剪硬币的像素数?
您需要使用countnonzero
countNonZero
Counts non-zero array elements.
C++: int countNonZero(InputArray src)
在 ROI 矩阵上使用它,它将 return 像素数的整数,在您的代码中它看起来像这样:
numberOfPixelsInMask = cv::countNonZero(mask);
我有一枚硬币的裁剪图像。我已经应用了面具,所以我可以专注于硬币本身。接下来是我要计算这枚硬币的像素数。我已经阅读过类似的帖子,但它们似乎对我不起作用。
这是原图: http://s30.postimg.org/eeh3lp99d/IMG_20150414_121300.jpg
和裁剪的硬币: http://s3.postimg.org/4k2pdst73/cropped.png
这是我目前的代码:
//get the number of pixels of the coin
//STEP 1: CROP THE COIN
//get the Rect containing he circl
Rect rectCircle(center.x - radius, center.y - radius, radius * 2, radius * 2); //obtain the image ROI:
Mat roi(src_gray, rectCircle);
//make a black mask, same size:
Mat mask(roi.size(), roi.type(), Scalar::all(0));
//with a white,filled circle in it:
circle(mask, Point(radius, radius), radius, Scalar::all(255), -1);
//combine roi and mask:
cv::Mat coin_cropped = roi & mask;
如何计算裁剪硬币的像素数?
您需要使用countnonzero
countNonZero
Counts non-zero array elements.
C++: int countNonZero(InputArray src)
在 ROI 矩阵上使用它,它将 return 像素数的整数,在您的代码中它看起来像这样:
numberOfPixelsInMask = cv::countNonZero(mask);