以下是使用C++和OpenCV实现对除了边界5个像素后的图像进行目标面积在大于50个像素的目标找出轮廓并且红色圈出的代码:

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    Mat img = imread("image.jpg");
    Mat gray, edge;
    cvtColor(img, gray, COLOR_BGR2GRAY);
    Canny(gray, edge, 100, 200);

    std::vector<std::vector<Point>> contours;
    std::vector<Vec4i> hierarchy;
    findContours(edge, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

    for (size_t i = 0; i < contours.size(); i++)
    {
        double area = contourArea(contours[i]);
        if (area > 50)
        {
            Rect rect = boundingRect(contours[i]);
            rectangle(img, rect, Scalar(0, 0, 255), 2);
        }
    }

    imshow("Result", img);
    waitKey(0);

    return 0;
}

该代码首先读取图像并将其转换为灰度图像,然后使用Canny边缘检测算法生成边缘图像。接下来,使用findContours函数查找轮廓,并使用contourArea函数计算每个轮廓的面积。如果面积大于50,则使用boundingRect函数获取轮廓的边界框,并使用rectangle函数在图像上绘制红色矩形。最后,使用imshow函数显示结果图像,并使用waitKey函数等待用户按下任意键

C++和opencv实现对除了边界5个像素后的图像进行目标面积在大于50个像素的目标找出轮廓并且红色圈出代码

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

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