如何从黑色背景的图像中提取所有矩形轮廓?
我想在底部获得黑色矩形(内部带有一些白色文本)
在代码中,我尝试通过cv::RETR_EXTERNAL
提取4个角的所有轮廓,但是它只将整个图像作为一个大轮廓提取?我在做什么错了?
std::vector<std::vector<cv::Point>> contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours(img, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
cv::cvtColor(img, img, cv::COLOR_GRAY2BGR);
for(int i = 0; i < contours.size(); i++){
std::cout << "contour found" << std::endl;
std::vector<cv::Point> approx;
cv::approxPolyDP(contours[i], approx, cv::arcLength(contours[i], true) * 0.02, true);
if(!cv::isContourConvex(approx)){
continue;
}
if(approx.size() == 4){
cv::rectangle(img, cv::boundingRect(contours[i]), cv::Scalar(0, 255, 0), 2);
}
}
cv::imwrite("img.png", img);
答案 0 :(得分:1)
发现我需要反转图像才能使用SELECT UNIX_TIMESTAMP(NOW() - INTERVAL 6 MINUTE) > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE) AS "is 6 minutes ago \"newer\" ?";
| is 6 minutes ago "newer" ? |
| -------------------------- |
| 0 |
cv::RETR_EXTERNAL
答案 1 :(得分:0)
您使用了错误的标志:
cv :: RETR_EXTERNAL:如果使用此标志,则仅返回极端的外部标志。所有子轮廓都被留下
https://docs.opencv.org/3.4.3/d9/d8b/tutorial_py_contours_hierarchy.html
您应该使用cv :: RETR_LIST,因为您需要所有轮廓并且不需要层次结构。