git地址:https://gitee.com/youzilzk/opencv1.git
实现很简单,可以复制代码简单修改下使用,前提是知道opencv基本操作,numpy的基本操作,知道图片的基本存储原理,了解颜色的RGB等
环境: python3,numpy,opencv-python
结构如图:
安装依赖:
pip install numpy
pip install opencv-python
代码如下
import os
import cv2 as cv
def combine(qr_path, picture_path, qr_size, picture_size):
if qr_size < picture_size:
raise Exception("qr_size不能小于picture_size")
qr = cv.imread(qr_path, flags=cv.IMREAD_COLOR)
out_qr = cv.resize(qr, dsize=(qr_size, qr_size))
picture = cv.imread(picture_path, flags=cv.IMREAD_COLOR)
out_picture = cv.resize(picture, dsize=(picture_size, picture_size))
# 这里使用了numpy的数组分片,这里我也不太清楚为什么我并没有导入numpy却可以使用,但是numpy必须安装在python环境中
out_qr[int((qr_size - picture_size) / 2):int((qr_size - picture_size) / 2) + picture_size, int((qr_size - picture_size) / 2):int((qr_size - picture_size) / 2) + picture_size, :] = out_picture
cv.imshow('image', out_qr)
cv.waitKey(0)
cv.destroyAllWindows()
def getEnvPath():
realpath = os.path.dirname(__file__)
return realpath
if __name__ == '__main__':
env_path = getEnvPath()
picture = "static/dog.jpg"
qr = "static/qrcode.png"
picture_path = os.path.join(env_path, picture)
qr_path = os.path.join(env_path, qr)
# 试了几次,背景图大约不能超过二维码的13/40,否则扫描不出信息,具体这个比值是多少则需要去看二维码标准RFC文档
combine(qr_path, picture_path,400,130)
执行效果