1.截取部分图像数据
cat=img[0:50,0:200] #[0:50,0:200]分别指的是横坐标与纵坐标的取值范围
2.颜色通道提取
图像的颜色通道分为b,g,r三个通道,分别是蓝(blue)绿(green)红(red)
b,g,r=cv2.split(img)
img=cv2.merge((b,g,r))
img.shape #通道分离
# 只保留R
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0
cv_show('R',cur_img)
3.边界填充
- ORIGINAL: 原图
- BORDER_REPLICATE:复制法,也就是复制最边缘像素。
- BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
- BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
- BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
- BORDER_CONSTANT:常量法,常数值填充。
top_size,bottom_size,left_size,right_size = (50,50,50,50) #500规定了边界填充的宽度
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)
4.数值计算
img_cat2= img_cat +10 #每个像素点+10
img_cat[:5,:,0] #[:5,:,0]表示的是像素矩阵只展示前五行
#相当于% 256
(img_cat + img_cat2)[:5,:,0] #图片像素分布区间在[0-255] 所以凡是大于255的值就会被视为越界
5.图像融合
融合两个图象,需要保证两个图片的尺寸必须相同,一般用img.shape来检查
img_dog = cv2.resize(img_dog, (500, 414)) #修剪图片大小
res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0) #按照图片的权重进行融合,0是图像融合后的增强量
res = cv2.resize(img, (0, 0), fx=4, fy=4) #图像缩放