色彩空间。

色彩空间

© Fu Xianjun. All Rights Reserved.

一、图像类型转换

1、将图像在BGR模式与RGB模式之间转换

代码如下

import cv2
import numpy as np
img1=cv2.imread("dog.png")
rgb = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)#图像类型转换函数
cv2.imshow("BGR",img1)
cv2.imshow("RGB",rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下

在这里插入图片描述

2、将图像在BGR模式与GRAY模式之间转换

代码如下

gray = cv2.cvtColor(bgr, cv2.COLOR_BGR2GRAY)
cv2.imshow("GRAY",gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如图

在这里插入图片描述

二、颜色通道分离

代码如下

print(f"BGR图像的shape为{bgr.shape}")
print(f"GRAY图像的shape为{gray.shape}")
def Colorsplit(img):
    (B,G,R) = cv2.split(img)#将BGR图像的颜色通道分离
    cv2.imshow("blue",B)
    cv2.imshow("green",G)
    cv2.imshow("red",R)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
Colorsplit(bgr)#将转换前的RGB图像颜色通道分离
bgr2 = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
cv2.imshow("after",bgr2)
cv2.waitKey(0)
cv2.destroyAllWindows()
Colorsplit(bgr2)#将转换后的RGB图像颜色通道分离

结果如下

在这里插入图片描述

三、提取指定颜色

1、提取图像中的红色区域

代码如下

import cv2
import numpy as np

img2=cv2.imread("yy.png")
cv2.imshow("SRC",img2)
hsv = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)#图像类型转换函数
cv2.imshow("HSV",hsv)

lowerb_hsv = np.array([156,43,46])#要识别颜色的下限
upperb_hsv = np.array([180,255,255])#要识别的颜色的上限

mask = cv2.inRange(hsv, lowerb_hsv, upperb_hsv)
cv2.imshow("MASK",mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

red = cv2.bitwise_and(img2,img2,mask=mask)
cv2.imshow("RED",red)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下

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

2、提取图像中的绿色区域

import cv2
import numpy as np

img=cv2.imread("yy.png")
cv2.imshow("SRC",img)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)#图像类型转换函数
cv2.imshow("HSV",hsv)

lowerb_hsv = np.array([37,43,46])#要识别颜色的下限
upperb_hsv = np.array([77,255,255])#要识别的颜色的上限,青色也是

mask = cv2.inRange(hsv, lowerb_hsv, upperb_hsv)
green = cv2.bitwise_and(img,img,mask=mask)
cv2.imshow("GREEN",green)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像怀旧特效

代码如下

#coding:utf-8
import cv2 as cv
import numpy as np

#读取原始图像
img = cv.imread('dog.png')

#获取图像行和列
rows, cols = img.shape[:2]

#新建目标图像
dst = np.zeros((rows, cols, 3), dtype="uint8")

#图像怀旧特效
for i in range(rows):
    for j in range(cols):
        B = 0.272*img[i,j][2] + 0.534*img[i,j][1] + 0.131*img[i,j][0]
        G = 0.349*img[i,j][2] + 0.686*img[i,j][1] + 0.168*img[i,j][0]
        R = 0.393*img[i,j][2] + 0.769*img[i,j][1] + 0.189*img[i,j][0]
        if B>255:
            B = 255
        if G>255:
            G = 255
        if R>255:
            R = 255
        dst[i,j] = np.uint8((B, G, R))
        
#显示图像
cv.imshow('result',np.vstack((img,dst)))
cv.waitKey()
cv.destroyAllWindows()

结果如图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值