一、截取部分图像数据(ROI-region of interest)
import cv2
# ###################截取部分图像数据
img2 = cv2.imread('my_imgs/Tom.jpg')
# print(img2)
cv2.imshow('img2', img2) # 原图
height = len(img2) # 原图高
width = len(img2[0]) # 原图宽
print(height)
print(width)
Tom1 = img2[0:100, 0:728] # [起始高度:结束高度,起始宽:结束宽]
cv2.imshow('Tom1', Tom1) # 裁剪后的图像
cv2.imwrite('D:\HONOR Magic-link\Screenshot\Tom22.png', Tom1) # 将截取后的图像保存至固定文件夹里
cv2.imwrite('D:\HONOR Magic-link\Screenshot\Tom11.jpg', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
(保存的图片)
同样,这里不论是读取图片的地址,还是保存图片的地址,都不能有中文及其他敏感词,如: \1 \2 \t ......
二、颜色通道提取
1、cv2.split()
要注意返回的单通道对应值,分别为B,G,R!!!
CV2.split(img)可以分散图像img的图像颜色通道值,返回的第一个值为彩色图像中的B,第二个数为G,第三个为R。
2、cv2.merge()
cv2.merge([b,g,r])可以将给定单通道信息合成3通道RGB彩色图像,也要对应好B,G,R
import cv2
# ##################颜色通道提取
img2 = cv2.imread('my_imgs/Tom.jpg')
b, g, r = cv2.split(img2)
# split()函数分散图像img2的图像颜色通道值,返回的第一个值为彩色图像中的B,第二个数为G,第三个为R
print(b)
print(g)
print(b.shape)
print(g.shape)
print(r.shape)
cv2.namedWindow('r', cv2.WINDOW_NORMAL) # 可调窗口大小
cv2.imshow('r', r)
img20 = cv2.merge([b, g, r])
# cv2.merge()函数可以将给定单通道信息合成3通道RGB彩色图像,也要对应好B,G,R
print(img20.shape)
cv2.namedWindow('img20', cv2.WINDOW_NORMAL) # 可调窗口大小
cv2.imshow('img20', img20)
cv2.waitKey(0)
cv2.destroyAllWindows()
经过cv2.merge()合成得到的图像,如下汤姆:
(原图也是如此
)
只保留R通道的数据的图像,如下:
3、img.copy()
img.copy()可以复制img图像
import cv2
img2 = cv2.imread('my_imgs/Tom.jpg')
# ####只保留R
cur_img1 = img2.copy() # 复制图像img2
cur_img1[:, :, 0] = 0 # 将B通道数据置0
cur_img1[:, :, 1] = 0 # 将G通道数据置0
cv2.namedWindow('R', cv2.WINDOW_NORMAL) # 可调窗口大小
cv2.imshow('R', cur_img1)
# ####只保留G
cur_img2 = img2.copy() # 复制图像img2
cur_img2[:, :, 0] = 0 # 将B通道数据置0
cur_img2[:, :, 2] = 0 # 将R通道数据置0
cv2.namedWindow('G', cv2.WINDOW_NORMAL) # 可调窗口大小
cv2.imshow('G', cur_img2)
cv2.waitKey(0)
cv2.destroyAllWindows()