使用opencv和numpy在二维码中嵌入logo

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)

执行效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值