【发布时间】:2019-06-03 06:02:53
【问题描述】:
目标是使用 Opencv 识别输入的扫描图像是护照或 PAN 卡。
我使用了skimage的structure_similarity(compare_ssim)方法来比较输入扫描图像与Passport和PAN卡模板的图像。
但在这两种情况下我都得分低。
这是我尝试过的代码
from skimage.measure import compare_ssim as ssim
import matplotlib.pyplot as plt
import numpy as np
import cv2enter code here
img1 = cv2.imread('PAN_Template.jpg', 0)
img2 = cv2.imread('PAN_Sample1.jpg', 0)
def prepare_img(im):
size = 300, 200
im = cv2.resize(im, size)
return im
img1 = prepare_img(img1)
img2 = prepare_img(img2)
def compare_images(imageA, imageB):
s = ssim(imageA, imageB)
return s
ssim = compare_images(img1, img2)
print(ssim)
将 PAN 卡模板与 Passport 进行比较,我的 ssim 分数为 0.12 并将 PAN 卡模板与 PAN 卡进行比较,得分为 0.20
由于两个分数非常接近,我无法通过代码区分它们。
如果有人有任何其他解决方案或方法,请提供帮助。
这是一个示例图片 PAN Scanned Image
【问题讨论】:
-
发布一些您正在处理的示例图像
-
你为什么不根据它们的文本内容比较图像。您可以对图像进行一些预处理操作并执行OCR以提取文本数据,并根据ocr输出字符串中的某些固定关键字集将它们分类为Pan card或Passport。
-
@flamelite 感谢您的回复。问题是使用 pytesseract (OCR) 我得到了不均匀的字符。我已经对图像进行了一些预处理,但精度仍然没有提高多少。
-
@sssm 请张贴示例图片,我会尝试 ocr 看看能否找到更好的输出。
-
@flamelite 我在上面发布了一张示例图片供您参考。
标签: python-3.x opencv image-processing computer-vision