• 扣图(图像色彩空间转换)


    利用图像色彩空间转换,进行扣图。

    1. import cv2
    2. import numpy
    3. #创建图像
    4. img=cv2.imread('jiuXinNai.jpg',cv2.IMREAD_REDUCED_COLOR_2)
    5. #扣图1,扣除黄色
    6. hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #色彩空间转换
    7. kou_part1=cv2.inRange(hsv,(26,43,46),(34,255,255)) #取出图像中黄色的部分,kou_part1表示黄色图像
    8. cv2.bitwise_not(kou_part1,kou_part1) #将kou_part1取反,就可以得到非黄色部分的一个图像
    9. img_kou1=cv2.bitwise_and(img,img,mask=kou_part1) #将原图像和非黄色部分图像进行逻辑与运算,就可以抠出没有黄色的图像
    10. #抠图2,将扣图1中的图像再抠除橙色
    11. kou_part2=cv2.inRange(hsv,(11,43,46),(25,255,255)) #取出图像中橙色的部分,kou_part2表示橙色图像
    12. cv2.bitwise_not(kou_part2,kou_part2) #将kou_part2取反,就可以得到非橙色部分的一个图像
    13. img_kou2=cv2.bitwise_and(img_kou1,img_kou1,mask=kou_part2) #将图像和非橙色部分图像进行逻辑与运算,就可以抠出没有橙色的图像
    14. #显示图像
    15. cv2.imshow('img',img)
    16. cv2.imshow('img_kou1',img_kou1)
    17. cv2.imshow('img_kou2',img_kou2)
    18. #保存图像
    19. cv2.imwrite("D:/img.jpg",img)
    20. cv2.imwrite("D:/img_kou1.jpg",img_kou1)
    21. cv2.imwrite("D:/img_kou2.jpg",img_kou2)
    22. cv2.waitKey(0)
    23. cv2.destroyAllWindows()

    首先是从网上随便找来的一张动漫图片,主要目的是把玖辛奈从图片里面扣出来。

     一眼看过去,动漫人物背景应该有三种背景颜色:黄色、橙色、白色,所以第一个先扣除黄色,得到下面的图像。

    扣除了黄色之后,再扣除橙色,就可以得到下面的图像。

     

     而上面就是最终的扣图效果了,而为什么不扣除白色呢?因为动漫人物身上也有白色,如果把白色消去的话,那动漫人物的脸和衣服上的白色也会被消去,就达不到扣图的效果了。

    比如会出现这种情况

    我已经扣除了白色部分了,但是好像还是没有清理干净, 另外一部分是什么颜色,我就不太清楚了。

    最后是inRange的取值表。

     

  • 相关阅读:
    C语言入门课程学习笔记3
    Rust 交叉编译 macOS 为 Linux 和 Windows
    使用中专API地址调用OpenAI大模型的入门指南
    【论文精读7】MVSNet系列论文详解-PVA-MVSNet
    xml schema中的all元素
    代码随想录二刷day50
    一、Azkaban简明笔记
    陪诊小程序|陪诊小程序关爱健康,无忧陪伴
    Abp Vnext 动态(静态)API客户端源码解析
    JVM如何卸载一个类
  • 原文地址:https://blog.csdn.net/oyqho/article/details/127704501