opencv图像处理_2

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) #图像缩放

猜你喜欢

转载自blog.csdn.net/qq_43607118/article/details/125206457