是否有像cvHoughCircles()这样的opencv函数用于方检?

Tha*_*988 5 c++ opencv image-processing

是否有任何opencv函数,如"cvHoughCircles()",可以用于圆检测程序的方检测程序,即CvSeq*circles = cvHoughCircles(),但我找不到方形检测.

Abi*_*n K 8

您不需要任何单独的功能.OpenCV带有方形检测样本(实际上检测矩形,你可以添加约束,所有边长度应相等以获得方形).

检查此链接:squares.cpp

关于此代码如何在此SOF中工作,有一个很好的解释:如何使用javacv识别具有可变长度和宽度的正方形或矩形?

以下是应用该代码时获得的结果.

在此输入图像描述


Rui*_*ues 5

没有opencv函数可以直接找到正方形.

但是你可以使用houghLines函数来检测线条,并找到90度角线之间的交叉点.

为了测量线之间的角度,我可以为您提供Java代码片段:

// returns cosine of angle between line segments 0 to 1, and 0 to 2.
// pt0 is the vertex / intersection
// angle of 90 degrees will have a cosine == 0

public static final double angleCosine(Point pt1, Point pt0, Point pt2) {
    double dx1 = pt1.x - pt0.x;
    double dy1 = pt1.y - pt0.y;
    double dx2 = pt2.x - pt0.x;
    double dy2 = pt2.y - pt0.y;
    return (dx1 * dx2 + dy1 * dy2) / Math.sqrt((dx1 * dx1 + dy1 * dy1) * (dx2 * dx2 + dy2 * dy2) + 1e-10);
}
Run Code Online (Sandbox Code Playgroud)

关于houghLines的文章:

http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghlines#houghlines