open-cv 的问题

2019-08-25 17:58:32 +08:00
 struggle001

cv2.imwrite 写到一个文件,在读出来,验证码不能有效解析,cv2.imshow,打开另存为,用后三行代码就可以解析......

def __getstr(self):
        if self.zb:
            tmp_image = self.img_rgb[self.zb[1]:self.zb[1]+ self.h + 10, self.zb[0]:self.zb[0] + self.w*2 + 10]
            cv2.imwrite("tmp.png",tmp_image)
            tmp_image = cv2.imread("tmp.png")
            text = pytesseract.image_to_string(tmp_image)
            print(text)
2773 次点击
所在节点    Python
7 条回复
douglas1997
2019-08-25 18:49:50 +08:00
写之前看一下数据类型,读完再看一下
Hconk
2019-08-25 23:34:45 +08:00
之前遇到过类似的问题,直接识别效果不行,存成 jpg 再读出来就好了,为了防止写文件就用 imencode 成.jpg 然后再 imdecode 回来就正常了,没细究原理,回头再研究下。
sadfQED2
2019-08-26 09:05:22 +08:00
你指定 psm 试一下,另外,最好用 tesseract(好像是这个名字)替代 pytesseract,pytesseract 的实现是把图片保存到临时文件,然后用命令行调用 tesseract 识别
sadfQED2
2019-08-26 09:06:47 +08:00
保存用 PIL,指定 dpi,opencv 保存没有 dpi 信息,可能有影响
struggle001
2019-08-26 11:11:01 +08:00
@sadfQED2 指定 text = pytesseract.image_to_string(tmp_image, config='--psm 7')问题已经解决了
@Hconk 已经 cv2.imwrite()成 png,之后在读出来了。
struggle001
2019-08-26 11:12:00 +08:00
struggle001
2019-08-26 11:12:40 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/594949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX