python语言越来越火,感觉再不使用就要out了。以前用C++做过一些关于OpenCV的小项目,这次用python试试。
一、python-OpenCV环境搭建
现在再来搭建python和OpenCV的环境实在太方便了,各种封装很完备,各种资料也很容易查找到。
一般来说有两种方式,
- pycharm加本地安装的python环境用pip下载安装,在命令行窗口仅需输入pip install opencv-python即可。
- anaconda,打开Anaconda Powershell Prompt, 在命令窗口输入conda install -c conda-forge opencv后下载安装。(详见https://anaconda.org/conda-forge/opencv)
这个下载后好像还不够,还需加入conda install -c fastai opencv-python-headless (https://anaconda.org/fastai/opencv-python-headless)。
通过导入import cv2,如果能够打印出print(cv2.version.opencv_version)版本信息,则说明环境没问题了。
二、简单使用
这里想做个一个二维码跟踪和解码的实验。以前还得使用第三方库,现在opencv就已经封装好了,就是QRCodeDetector API。详细代码如下:
import cv2 as cv
import numpy as np
cap = cv.VideoCapture("D:/test.mp4")
qrcoder = cv.QRCodeDetector()
while True:
ret, frame = cap.read()
if ret:
codeinfo, bbox, straight_qrcode = qrcoder.detectAndDecode(frame)
if bbox is not None:
pointOne = tuple(bbox[0][0])
cv.drawContours(frame, [np.int32(bbox)], 0, (0, 0, 255), 2)
cv.putText(frame, codeinfo, (np.int32(pointOne[0]), np.int32(pointOne[1])), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv.imshow("frame", frame)
else:
break
key = cv.waitKey(25)
if key == 27:
break
cap.release()
cv.destroyAllWindows()
这里是读取一个视频文件(通过摄像头也是一样的),当有二维码出现时,则detectAndDecode可以提取到二维码的顶点信息,然后代码中会将二维码的轮廓和解析后的内容显示在图像上。
关于二维码的制作,网上也有很多小工具,这里就不再阐述了。
最后运行效果如下:
Enjoy!