【问题标题】:OpenCV : Detecting Uncomplete Rounded RectangleOpenCV:检测不完整的圆角矩形
【发布时间】:2022-01-16 09:51:22
【问题描述】:

如何使用 OpenCV 检测不完整的圆形卡片 ID

示例

我试过findContours但无法得到卡片的边缘点,我的目标是裁剪卡片。

使用的代码

import cv2

image = cv2.imread('./data/15430864595779441.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

binary = cv2.bitwise_not(gray)
cv2.imshow("Binary" , binary)
(contours,_) = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for contour in contours:
    (x,y,w,h) = cv2.boundingRect(contour)
    cv2.rectangle(image, (x,y), (x+w,y+h), (0,255,0), 2)


cv2.imshow("Results" , image)
cv2.waitKey(0)

【问题讨论】:

  • 请从图片中删除个人数据!
  • 完成,谢谢 (Y)
  • 对图片中卡片的大小和位置有任何假设吗?例如。卡片至少覆盖了 50% 的图像区域,并且图像中心位于卡片的内部区域?
  • 如何检测身份证是一个常见问题。我确信以前的问题有有用的答案。 - 我不明白阈值如何在这里起作用。卡片与背景没有对比。 -- 你可以尝试特征匹配和单应性,samples/python/find_obj.py in OpenCV -- 霍夫线提取可能适用...

标签: python opencv image-processing


【解决方案1】:

我已经编写了一段代码来为您提供解决方案。

我的方法是首先应用 Canny Detector 来查找图像的所有边缘。然后,应用霍夫变换,可以找到阈值图像的所有直线(直到这里我已经实现了代码)。然后,您可以将线段延伸成完整的线,以找到线与卡片角相交的位置。 (我认为必须进行一些预处理以去除异常值,但这是可能的。)

我附上我获得的代码和输出:

import cv2
import math
import numpy as np
import matplotlib.pyplot as plt

image = cv2.imread('card2.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

edges = cv2.Canny(gray, 100, 200)
lines = cv2.HoughLinesP(edges, 1, math.pi / 180.0, 100, minLineLength=100, maxLineGap=10)

plt.imshow(edges)
plt.show()

print(lines)
for x in range(0, len(lines)):
    for x1,y1,x2,y2 in lines[x]:
        cv2.line(image,(x1,y1),(x2,y2),(0,255,0),2)

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

Canny 边缘检测器后的掩码

检测到在输入图像上绘制的线条

希望它有效,如果需要更多信息,请告诉我。

检测到在 cmets 示例图像上绘制的线条

【讨论】:

  • 感谢您的代码,我有一个问题,我无法检测到像 ibb.co/8r8PDrV 这样的其他图像上的边缘,我必须修改任何特殊内容以使您的代码通用
  • 这段代码中有很多参数,你应该使用你的数据集对它们进行微调,使用某种训练/测试拆分和诸如联合交集 (IoU) 之类的指标。但是,使用您在评论中显示的另一张图像,我尝试使用 Canny Detector 的不同阈值,并取得了很好的效果。我建议你看看:Canny Detector in OpenCV。此外,我将我已更改的代码附在您身上,并修改了答案以放置您的图像结果。 edges = cv2.Canny(v, 150, 50)
猜你喜欢
  • 2016-02-06
  • 1970-01-01
  • 2017-08-06
  • 2015-06-10
  • 2017-05-24
  • 2016-06-01
  • 1970-01-01
  • 2018-03-11
  • 2013-11-18
相关资源
最近更新 更多