gpt4 book ai didi

python - 摆脱背景条纹(Python、OpenCV)

转载 作者:行者123 更新时间:2023-12-02 17:08:49 24 4
gpt4 key购买 nike

我正在尝试一个项目,我必须提取一个正方形,特别是一张身份证。

src

问题发生在刚开始时,当我尝试检测(并在提取后)卡时。
我正在使用 Canny Edge 和这段代码:

import cv2
import numpy as np

card = cv2.imread('card.png')
card = cv2.resize(card, (800, 800))

gray = cv2.cvtColor(card, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
cv2.imshow("Gray", gray)
cv2.waitKey(0)

# detect edges in the image
edged = cv2.Canny(gray, 10, 250)
cv2.imshow("Edged", edged)
cv2.waitKey(0)

# construct and apply a closing kernel to 'close' gaps between 'white'
# pixels
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))
closed = cv2.morphologyEx(edged, cv2.MORPH_CLOSE, kernel)
cv2.imshow("Closed", closed)
cv2.waitKey(0)

对于此图像(手动应用模糊以保护隐私),这是 Canny edge 的结果。

o1

这是普通卡片的结果(应用模糊后)

o2

我的问题是 2:如何摆脱背景条纹?如何最终缩小最后一张图像中的间隙(由于模糊,它在第一个处理的图像中关闭,但将最后一张作为用例)?

奖金

我将此添加为替代来源(以及我的结果 - 封闭内核)

src2
o3

谢谢

最佳答案

不要将图像转换为 gray_scale,而是尝试将其转换为 hsv 颜色空间。并使用饱和 channel 进行边缘检测。代码和结果:

import cv2
import numpy as np

card = cv2.imread('inputs/Idcard.jpg')
hsv = cv2.cvtColor(card, cv2.COLOR_BGR2HSV)
blur = cv2.GaussianBlur(hsv[:,:,1],(7,7),0)
edged = cv2.Canny(blur, 10, 250)
cv2.imwrite("Edged.jpg", edged)

Edge Image

关于python - 摆脱背景条纹(Python、OpenCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com