C++ OpenCV 识别并标记图像轮廓:面积大于 50 的红色轮廓
以下是使用 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 函数将其标记为红色。最后,显示结果图像并等待用户按下任意键关闭窗口。
原文地址: https://www.cveoy.top/t/topic/jOwz 著作权归作者所有。请勿转载和采集!