• OpenCV-17制作LOGO小练习


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

    1.引入图片

    2.设计一个LOGO的图片

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

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

    1. import cv2
    2. import numpy as np
    3. # 导入图片
    4. dog = cv2.imread("dog.png")
    5. # 创建LOGO
    6. logo = np.zeros((200, 200, 3), np.uint8) # 一个纯黑LOGO背景
    7. # 绘制LOGO
    8. logo[20:120, 20:120] = [255, 0, 0]
    9. logo[80:180, 80:180] = [0, 255, 0]
    10. cv2.imshow("logo", logo)
    11. cv2.imshow("dog", dog)
    12. cv2.waitKey(0)
    13. cv2.destroyAllWindows()

    输出的LOGO图像如图所示: 

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

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

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

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

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

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

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

    1. roi = dog[0:300, 0:300] # 浅拷贝
    2. # roi与m进行与操作
    3. tmp = cv2.bitwise_and(roi, roi, mask=m) # roi与roi与操作之后还是roi,
    4. # 在于mask进行与运算,如果结果为True,返回原图,如果为False,返回黑色。
    5. cv2.imshow("tmp", tmp)

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

    1. dst = cv2.add(tmp, logo)
    2. cv2.imshow("dst",dst)

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

    dog[:300, :300] = dst

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

    综合演示代码如下所示:

    1. import cv2
    2. import numpy as np
    3. # 导入图片
    4. dog = cv2.imread("dog.png")
    5. # 创建LOGO
    6. logo = np.zeros((300, 300, 3), np.uint8) # 一个纯黑LOGO背景
    7. # 绘制LOGO
    8. logo[20:120, 20:120] = [255, 0, 0]
    9. logo[80:180, 80:180] = [0, 255, 0]
    10. # 创建一个掩码
    11. mask = np.zeros((300, 300), np.uint8) # 创建一个二维的与LOGO一样的的掩码
    12. mask[20:120, 20:120] = 255
    13. mask[80:180, 80:180] = 255
    14. cv2.imshow("mask", mask)
    15. m = cv2.bitwise_not(mask) # 将创建的掩码取反
    16. cv2.imshow("m", m)
    17. # 选择dog添加LOGO的位置
    18. roi = dog[0:300, 0:300] # 浅拷贝
    19. # roi与m进行与操作
    20. tmp = cv2.bitwise_and(roi, roi, mask=m) # roi与roi与操作之后还是roi,
    21. # 在于mask进行与运算,如果结果为True,返回原图,如果为False,返回黑色。
    22. cv2.imshow("tmp", tmp)
    23. # 进行add拼接
    24. dst = cv2.add(tmp, logo)
    25. cv2.imshow("dst",dst)
    26. # 在dog上还原
    27. dog[:300, :300] = dst
    28. cv2.imshow("logo", logo)
    29. cv2.imshow("dog", dog)
    30. cv2.waitKey(0)
    31. cv2.destroyAllWindows()

  • 相关阅读:
    Windows 11 家庭中文版添加本地安全策略
    Nginx文件跨域解决方案
    springMVC返回对象或List集合时报错 无法解析
    “二舅”火了,自媒体短视频“爆火”的基本要素,你知道吗?
    前端学习-平面转换
    PyTorch(四)Torchvision 与 Transforms
    Arcgis 数据操作
    .NET Core 使用 System.Threading.Channels消息队列
    《无限可能-快速唤醒你的学习脑》阅读笔记
    HarmonyOS/OpenHarmony应用开发-FA卡片开发体验
  • 原文地址:https://blog.csdn.net/weixin_47702917/article/details/135430383