opencv findContours() 的C原始碼
时间: 2024-07-04 19:00:24 浏览: 173
contours.rar_opencv_opencv 人脸_visual c
OpenCV中的`findContours()`函数是一个用于从二进制图像中检测轮廓的函数。在C++原始代码中,使用这个函数通常涉及以下步骤:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
cv::Mat src_image; // 假设你已经有了一个二进制图像(例如,通过thresholding或边缘检测得到)
std::vector<std::vector<cv::Point>> contours; // 用于存储检测到的轮廓
cv::Mat hierarchy; // 可选,存储轮廓之间的层次关系
// 首先,读取或处理你的图像
cv::imread("your_image.png", cv::IMREAD_GRAYSCALE); // 替换为你的图片路径
cv::threshold(src_image, src_image, 127, 255, cv::THRESH_BINARY_INV); // 假设进行了阈值处理
// 然后调用findContours()
cv::findContours(src_image, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);
// 如果你想检查图像是否包含轮廓,可以这样做:
bool has_contours = !contours.empty();
// 如果你感兴趣的是特定级别的轮廓,例如最外层轮廓(一级轮廓),可以这样获取:
cv::Mat temp;
cv::findContours(src_image, contours, cv::noArray(), cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
// 这里`contours`现在只包含一级轮廓
阅读全文