OpenCV-17制作LOGO小练习

在编写代码之前我们需要理清思路:

1.引入图片

2.设计一个LOGO的图片

  1. 规划一下LOGO希望放在那个位置,在添加的位置变为黑色

  2. 利用add方法,将logo和图片叠加在一起

    import cv2
    import numpy as np

    导入图片

    dog = cv2.imread("dog.png")

    创建LOGO

    logo = np.zeros((200, 200, 3), np.uint8) # 一个纯黑LOGO背景

    绘制LOGO

    logo[20:120, 20:120] = [255, 0, 0]
    logo[80:180, 80:180] = [0, 255, 0]

    cv2.imshow("logo", logo)
    cv2.imshow("dog", dog)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

输出的LOGO图像如图所示:

接下来我们计划将LOGO放在小狗图片的左上角。

在OpenCV位运算中,还存在掩码(mask)操作。

例如cv.bitwise_and(src1, src2, dst, mask)

位运算,前面两个图片先做一个与运算,与完之后再与掩码做一个与运算。

如果结果为True,则显示前面与完结果之后的值

如果结果为False,则统一为0

且无论是and、or、not、xor在OpenCV中与掩码的操作都为与运算。

复制代码
roi = dog[0:300, 0:300]   # 浅拷贝

# roi与m进行与操作
tmp = cv2.bitwise_and(roi, roi, mask=m)    # roi与roi与操作之后还是roi,
# 在于mask进行与运算,如果结果为True,返回原图,如果为False,返回黑色。
cv2.imshow("tmp", tmp)

此时发现得到的tmp与logo进行add运算,即可把logo嵌入。

复制代码
dst = cv2.add(tmp, logo)
cv2.imshow("dst",dst)

最后我们再在dog上还原图片

复制代码
dog[:300, :300] = dst

最终我们可以得到一下带LOGO的小狗图片

综合演示代码如下所示:

复制代码
import cv2
import numpy as np

# 导入图片
dog = cv2.imread("dog.png")

# 创建LOGO
logo = np.zeros((300, 300, 3), np.uint8)  # 一个纯黑LOGO背景

# 绘制LOGO
logo[20:120, 20:120] = [255, 0, 0]
logo[80:180, 80:180] = [0, 255, 0]

# 创建一个掩码
mask = np.zeros((300, 300), np.uint8)  # 创建一个二维的与LOGO一样的的掩码
mask[20:120, 20:120] = 255
mask[80:180, 80:180] = 255

cv2.imshow("mask", mask)
m = cv2.bitwise_not(mask)  # 将创建的掩码取反
cv2.imshow("m", m)

# 选择dog添加LOGO的位置
roi = dog[0:300, 0:300]   # 浅拷贝

# roi与m进行与操作
tmp = cv2.bitwise_and(roi, roi, mask=m)    # roi与roi与操作之后还是roi,
# 在于mask进行与运算,如果结果为True,返回原图,如果为False,返回黑色。
cv2.imshow("tmp", tmp)
# 进行add拼接
dst = cv2.add(tmp, logo)
cv2.imshow("dst",dst)

# 在dog上还原
dog[:300, :300] = dst

cv2.imshow("logo", logo)
cv2.imshow("dog", dog)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
Python图像识别13 分钟前
71_基于深度学习的布料瑕疵检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
余俊晖13 分钟前
如何构造一个文档解析的多模态大模型?MinerU2.5架构、数据、训练方法
人工智能·文档解析
千码君20161 小时前
React Native:从react的解构看编程众多语言中的解构
java·javascript·python·react native·react.js·解包·解构
淮北4942 小时前
windows安装minicoda
windows·python·conda
Akamai中国2 小时前
Linebreak赋能实时化企业转型:专业系统集成商携手Akamai以实时智能革新企业运营
人工智能·云计算·云服务
LiJieNiub3 小时前
读懂目标检测:从基础概念到主流算法
人工智能·计算机视觉·目标跟踪
weixin_519535773 小时前
从ChatGPT到新质生产力:一份数据驱动的AI研究方向指南
人工智能·深度学习·机器学习·ai·chatgpt·数据分析·aigc
爱喝白开水a3 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
takashi_void3 小时前
如何在本地部署大语言模型(Windows,Mac,Linux)三系统教程
linux·人工智能·windows·macos·语言模型·nlp
OpenCSG3 小时前
【活动预告】2025斗拱开发者大会,共探支付与AI未来
人工智能·ai·开源·大模型·支付安全