findContours检测黑底白字轮廓代码
时间: 2024-07-14 20:00:49 浏览: 95
`findContours` 是 OpenCV(开源计算机视觉库)中的一个重要功能,用于从图像中提取边缘、轮廓等特征。对于检测黑底白字(即前景和背景颜色对比强烈)的轮廓,你可以使用以下步骤编写代码:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main() {
// 读取图片
cv::Mat image = cv::imread("input_image.jpg", cv::IMREAD_GRAYSCALE); // 假设是灰度图像
// 处理图像,通常会先进行二值化处理
cv::threshold(image, image, 128, 255, cv::THRESH_BINARY_INV); // 如果文字为白色,前景设置为255(白色),背景设置为0(黑色)
// 寻找轮廓,cv::RETR_EXTERNAL 只获取外轮廓,cv::CHAIN_APPROX_SIMPLE 提高性能
std::vector<std::vector<cv::Point>> contours;
cv::findContours(image, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
// 现在 contours 数组里存储了轮廓点
for (const auto& contour : contours) {
// 可以对每个轮廓执行进一步操作,比如计算面积或绘制轮廓
cv::drawContours(image, contour, -1, cv::Scalar(0, 0, 255), 2); // 绘制轮廓,蓝色
}
// 显示结果
cv::imshow("Contours Detected", image);
cv::.waitKey(0);
cv::.destroyAllWindows();