Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测图像中的部分形状_Python_Opencv_Computer Vision_Shapes - Fatal编程技术网

Python 检测图像中的部分形状

Python 检测图像中的部分形状,python,opencv,computer-vision,shapes,Python,Opencv,Computer Vision,Shapes,我试图检测图像中的形状,这些形状可能有点歪斜/变形或不完整。形状由直线和圆弧组成(它们是足球场上的标记)。让我给你举个例子 要检测的形状: 要搜索的图像: 我尝试了几种方法: 1) 使用OpenCV的SimpleBlobDetector。这会检测到一个圆形形状,该形状是惩罚区域圆弧,但并不完全适合它。这是一个起点,但我担心它不够健壮,因为它没有检测到另一个不完整的圆(在半线上)。 2) 我还尝试用OpenCV的HoughCircles检测圆,但没有检测到 3) 我还尝试在基础图像上检测轮廓

我试图检测图像中的形状,这些形状可能有点歪斜/变形或不完整。形状由直线和圆弧组成(它们是足球场上的标记)。让我给你举个例子

要检测的形状:

要搜索的图像:

我尝试了几种方法:

1) 使用OpenCV的SimpleBlobDetector。这会检测到一个圆形形状,该形状是惩罚区域圆弧,但并不完全适合它。这是一个起点,但我担心它不够健壮,因为它没有检测到另一个不完整的圆(在半线上)。

2) 我还尝试用OpenCV的HoughCircles检测圆,但没有检测到

3) 我还尝试在基础图像上检测轮廓,并使用OpenCV的matchShapes将其与形状进行比较。这给了很多误报

4) 最后,我想到了一个自定义实现,它将识别图像中的所有垂直线(使用OpenCV的HoughLinesP),然后尝试沿每一行“滑动”形状图像(如本文第一张图片所示),计算匹配像素的百分比(在本例中,这将是添加到255的像素)。我还没有完全实现它,因为我看到了它的一些问题:速度和对所需形状的可能变形(甚至在我粘贴的示例中也可以看到)


如果能给我一些关于如何解决这个问题的提示,我将不胜感激。

试着看看模板匹配在您的案例中是否有效-我读过,但从未使用过,因为我的印象是它只能找到精确的匹配。我错了吗?还有,它是如何处理旋转、缩放等问题的?我不知道你到底想检测哪些部分?@YunusTemurlenk分割足球场的线条(如第一次展览所示)。我认为你可以通过逐步缩放图像来进行模板匹配。为了提高性能,您可以使用2倍、4倍甚至16倍更小的图像。假设您没有丢失匹配的任何详细信息。通过旋转模板可以对方向执行相同的操作。但这将严重影响性能。您也可以尝试功能匹配。尝试看看模板匹配是否适用于您的情况-我读过,但从未使用过,因为我的印象是它只能找到精确的匹配。我错了吗?还有,它是如何处理旋转、缩放等问题的?我不知道你到底想检测哪些部分?@YunusTemurlenk分割足球场的线条(如第一次展览所示)。我认为你可以通过逐步缩放图像来进行模板匹配。为了提高性能,您可以使用2倍、4倍甚至16倍更小的图像。假设您没有丢失匹配的任何详细信息。通过旋转模板可以对方向执行相同的操作。但这将严重影响性能。您还可以尝试功能匹配。