【问题标题】:The best and quickest method for detecting quadratic shape in image using OpenCV?使用 OpenCV 检测图像中二次形状的最佳和最快方法?
【发布时间】:2015-05-11 03:50:02
【问题描述】:

在过去的几天里,我正在寻找在图像中找到二次形状的好方法。

例如,看一下附加的图像。

我想找到白屏部分的边缘(在这种情况下是电视屏幕)。

我可以用我想要的任何东西替换白色画布,例如二维码、一些纹理等 - 只是寻找那个形状的坐标。

形状的其他特征:

  • 应该只检测一个形状。
  • 应使用透视变换。

语言不是那么重要,但我想为此使用 OpenCV。

【问题讨论】:

  • 我已经更新了透视变换的答案,但如果只检测一种形状,你应该有标准,例如图案、颜色、大小

标签: opencv image-processing feature-detection


【解决方案1】:

这些都是已经在 OpenCV 中实现的优秀算法:

Harris 角点检测器为GoodFeatureToTrackDetector

GoodFeaturesToTrackDetector harris_detector (1000, 0.01, 10, 3, true);
vector<KeyPoint> keypoints;
cvtColor (image, gray_image, CV_BGR2GRAY);
harris_detector.detect (gray_image, keypoints);

FeatureDetector::create("FAST")FASTX 的快速角检测器

Ptr<FeatureDetector> feature_detector = FeatureDetector::create("FAST");
vector<KeyPoint> keypoints;
cvtColor (image, gray_image, CV_BGR2GRAY);
feature_detector->detect (gray_image, keypoints);

或者

FASTX (gray_image, keypoints, 50, true, FastFeatureDetector::TYPE_9_16);

SIFT(尺度不变特征变换)为FeatureDetector::create("SIFT")

Ptr<FeatureDetector> feature_detector = FeatureDetector::create("SIFT");
vector<KeyPoint> keypoints;
cvtColor (image, gray_image, CV_BGR2GRAY);
feature_detector->detect (gray_image, keypoints);

更新透视变换(动手前必须知道4点):

Point2f source [4], destination [4];
// Assign values to source and destination points.
perspective_matrix = getPerspectiveTransform( source, destination );
warpPerspective( image, result, perspective_matrix, result.size() );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2023-03-20
    相关资源
    最近更新 更多