c++ - opencv:如何填充区域外的区域/边缘

标签 c++ opencv

下图仅包含阈值处理后的黑色和白色像素。我在此图像的顶部绘制了一个灰色的旋转矩形。现在我想计算这个旋转矩形内的黑色像素数,但不包括白色矩形矩形外的黑色像素(即白色矩形内的像素数)。

做到这一点的最佳方法是什么?我应该用白色像素填充白色矩形之外的区域吗?欢迎提出任何建议。

enter image description here

最佳答案

如果您知道要搜索的区域的角度和大小,则可以使用此技术将其从图像中裁剪出来:

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

(我知道它的 Python,但有一个 C++ 等价物)

编辑

您可以使用此代码返回并打印每个像素的值,这样您就可以了解返回的值类型(如果是二进制图像,应该只是 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));

一旦获得这些值,就可以制作一个计数器,每当像素值超过某个阈值时计数器就会递增

关于c++ - opencv:如何填充区域外的区域/边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693430/

相关文章:

c++ - 使用 ios::binary 或 ios::out 或两者打开文件有什么区别?

C++11 - typeid 唯一性

OpenCV OutputArray 堆损坏?

python - OpenCVadaptiveThreshold函数返回的图像中的每个像素的值为255

python - 如何在Python中将边缘检测结果和原始图片拼凑在一起

c++ - 为什么这段代码会崩溃

c++ - std::map 如何/在哪里初始化其成员?

c++ - 将点 vector 转换为 Mat (OpenCV)

OpenCV Mat图像在通过引用调用函数后改变大小

c++ - 为什么 C++ ifstream 不能从设备读取?