以下是使用 C++ 和 OpenCV 识别图像中目标轮廓,并对面积大于 50 的轮廓进行红色标记的代码示例:

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    // 读取图像
    Mat image = imread('image.jpg');

    // 转换为灰度图像
    Mat gray;
    cvtColor(image, gray, COLOR_BGR2GRAY);

    // 二值化处理
    Mat binary;
    threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);

    // 查找轮廓
    std::vector<std::vector<Point>> contours;
    std::vector<Vec4i> hierarchy;
    findContours(binary, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

    // 遍历轮廓
    for (size_t i = 0; i < contours.size(); i++)
    {
        // 计算轮廓面积
        double area = contourArea(contours[i]);

        // 如果面积大于 50,标记为红色
        if (area > 50)
        {
            drawContours(image, contours, i, Scalar(0, 0, 255), 2);
        }
    }

    // 显示结果
    imshow('Result', image);
    waitKey(0);

    return 0;
}

该代码首先读取一张图像,然后将其转换为灰度图像并进行二值化处理。接下来,使用 findContours 函数查找图像中的轮廓。然后,遍历所有轮廓并计算其面积。如果面积大于 50,则使用 drawContours 函数将其标记为红色。最后,显示结果图像并等待用户按下任意键关闭窗口。

C++ OpenCV 识别并标记图像轮廓:面积大于 50 的红色轮廓

原文地址: https://www.cveoy.top/t/topic/jOwz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录