OpenCV(二) —— 颜色通道提取 边界填充 数值计算 图像融合
颜色通道提取 cv2.split() & cv2.merge()
import cv2 img=cv2.imread('cat.jpg') cv2.imshow('Image',img) cv2.waitKey(0) b,g,r=cv2.split(img) print(r.shape) cv2.imshow('Image',b) cv2.waitKey(0) cv2.imshow('Image',g) cv2.waitKey(0) cv2.imshow('Image',r) cv2.waitKey(0) img=cv2.merge((b,g,r)) print(img.shape) # 只保留R cur_img = img.copy() cur_img[:,:,0] = 0 cur_img[:,:,1] = 0 cv2.imshow('R',cur_img) cv2.waitKey(0) # 只保留G cur_img = img.copy() cur_img[:,:,0] = 0 cur_img[:,:,2] = 0 cv2.imshow('G',cur_img) cv2.waitKey(0) # 只保留B cur_img = img.copy() cur_img[:,:,1] = 0 cur_img[:,:,2] = 0 cv2.imshow('B',cur_img) cv2.waitKey(0)
可见RGB,单个通道拿出来的话都是灰的
边界填充 cv2.copyMakeBorder()
- BORDER_REPLICATE:复制法,也就是复制最边缘像素。
- BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
- BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
- BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
- BORDER_CONSTANT:常量法,常数值填充。
import cv2 img=cv2.imread('cat.jpg') top_size,bottom_size,left_size,right_size = (50,50,50,50) replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE) reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT) reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101) wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP) constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0) import matplotlib.pyplot as plt plt.subplot(231), plt.imshow(img, 'gray'), plt.title('ORIGINAL') plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE') plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT') plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('REFLECT_101') plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP') plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONSTANT') plt.show()
数值计算
图像融合
https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C.ipynb
https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E6%93%8D%E4%BD%9C.zip