【发布时间】:2022-01-14 07:11:00
【问题描述】:
我想使用 OpenCV 检测图像中德国身份证的边界矩形。
这是我的代码的样子:
capture >> frame;
cv::resize(frame, frame, cv::Size(512,256));
cv::Mat grayScaledFrame, blurredFrame, cannyFrame;
cv::cvtColor(frame, grayScaledFrame, cv::COLOR_BGR2GRAY);
cv::GaussianBlur(grayScaledFrame, blurredFrame, cv::Size(9,9), 1);
cv::Canny(blurredFrame, cannyFrame, 40, 70);
// CONTOURS
std::vector<std::vector<cv::Point>> contours;
cv::findContours(cannyFrame, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
// SORT
int maxArea = 0;
std::vector<cv::Point> contour;
for(int i = 0; i < contours.size(); i++) {
int thisArea = cv::contourArea(contours.at(i));
if(thisArea > maxArea) {
maxArea = thisArea;
contour = contours.at(i);
}
}
cv::Rect borderBox = cv::boundingRect(contour);
cv::rectangle(cannyFrame, borderBox, cv::Scalar{255, 32, 32}, 8);
cv::imshow("Webcam", cannyFrame);
结果如下所示: RESULT
检测到一些矩形,但不是我感兴趣的大矩形。 我已经尝试过 Canny 的不同阈值以及高斯模糊的不同内核大小。
最好的问候
【问题讨论】:
-
每个人都试图从网络摄像头视频中检测卡片。其他人有什么不同,他们似乎有更好的结果?介绍您的文献综述
标签: c++ opencv computer-vision canny-operator