这是我参与更文挑战的第18天,活动详情查看: 更文挑战
OpenCV
是一个C++
库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python
中常使用OpenCV
库实现图像处理。
本文将介绍如何在Python3
中使用OpenCV
实现二维码识别与解析:
OpenCV
在对象检测模块QRCodeDetector
有两个相关API
分别实现二维码检测与二维码解析。
检测API
points = QRCodeDetector.detect(img)
复制代码
其中:
img
为输入图像,灰度或者彩色图像;points
输出得到的二维码四个点的坐标信息;
识别API
straight_qrcode = QRCodeDetector.decode(img, points)
复制代码
其中:
img
为输入图像,灰度或者彩色图像;points
是二维码ROI
最小外接矩形顶点坐标;straight_qrcode
输出的是二维码区域ROI
图像信息 返回的二维码utf-8
字符串;
结合检测识别的API
points,straight_qrcode = QRCodeDetector.detectAndDecode(img)
复制代码
其中:
img
为输入图像,灰度或者彩色图像;points
输出二维码ROI
最小外接矩形顶点坐标;straight_qrcode
输出的是二维码区域ROI图像信息 返回的二维码utf-8
字符串;
网站显示
我们通过二维码识别与解析出来的网站可以通过Python3
的webbrowser
库,利用谷歌浏览器进行显示。
chromePath = r'C:\Users\37218\AppData\Local\Google\Chrome\Application\chrome.exe '
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chromePath))
webbrowser.get('chrome').open(str(codeinfo),new=1,autoraise=True)
复制代码
其中:
chromePath
为谷歌浏览器文件所在的地址;str(codeinfo)
为解析得到的网站;
完整代码
import cv2
import numpy as np
import webbrowser
# 读取图像
src = cv2.imread("E:\\demo\\demo1.png")
cv2.imshow("image", src)
# 灰度转换
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
# 检测
qrcoder = cv2.QRCodeDetector()
# 解码
codeinfo, points, straight_qrcode = qrcoder.detectAndDecode(gray)
print(points)
result = np.copy(src)
# 描绘轮廓
cv2.drawContours(result, [np.int32(points)], 0, (0, 0, 255), 2)
print("qrcode : %s" % codeinfo)
# 添加文字
cv2.putText(result, "qrcode:" + str(codeinfo), (0, 20), cv2.FONT_HERSHEY_SIMPLEX, .5, (255, 0, 0), 1);
cv2.imshow("result", result)
#使用Google浏览器,打开扫码得到的网站
chromePath = r'C:\Users\37218\AppData\Local\Google\Chrome\Application\chrome.exe '
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chromePath))
webbrowser.get('chrome').open(str(codeinfo),new=1,autoraise=True)
cv2.waitKey(0)
cv2.destroyAllWindows()
复制代码
输出为:
我用草料二维码,将我掘金首页的网页链接制作成了二维码。
代码识别并解析出来了二维码的网站,同时也打开了该网站页面。
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END