入门opencv

这篇博客介绍了如何利用OpenCV的色彩空间转换和阈值处理来提取图像中的特定颜色,并通过掩膜进行颜色替换。通过将图像从BGR转换为HSV色彩空间,设置颜色范围,使用cv2.inRange创建掩膜,然后通过位运算实现颜色提取和替换。虽然直接替换颜色后与原图像交互存在困难,但这种方法对于色彩筛选非常有效。
摘要由CSDN通过智能技术生成

Day3 如何提取色彩

制作掩膜

色彩在图片中可视为一种具有特定特征的元素,利用RGB的值或者HSV可以识别,提取特定颜色,根据上一次的add我们已经知道抠图其实就是1掩膜的制作与相加,所以我们对于色彩的提取也可以先制作关于色彩的掩膜,然后再进行与预算,就可以只保留该颜色,甚至可以替换特定色彩。

img1 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower = np.array([30, 150, 50])
upper = np.array([255, 255, 180])
img2 = cv2.inRange(img1, lower, upper)
img3 = cv2.bitwise_and(img, img, mask=img2)

这里利用cv.inRange函数的功能,将hsv图像中在指定范围外的部分全部清零,范围内的全部都变为白色。
再与原图进行与运算,下面是完整代码:

import cv2
import numpy as np
img = cv2.imread('C:\\Users\\1\\PycharmProjects\\text\\2\\Collage_20210913_135916.jpg')
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower = np.array([30, 150, 50])
upper = np.array([255, 255, 180])
img2 = cv2.inRange(img1, lower, upper)
img3 = cv2.bitwise_and(img, img, mask=img2)

cv2.namedWindow('image1')
cv2.namedWindow('image2')
cv2.imshow('image1', img2)
cv2.imshow('image2', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

尝试替换颜色

本来我是这么想的:既然可以提取出特定颜色,就可以在提取出来后进行颜色的替换。但问题在于替换后如何与原图像交互,更大的问题是,提取出的只是包含0和1的一个检测器,准确来说其实和原图像的色彩数据并无太大关系,只是能起到一个特征筛选的作用,所以其实这种方法的作用应该是比较有限的。
当然这只是我自己的想法,可能其实是办得到的,但我实在不会了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值