边界填充
import cv2 import matplotlib.pyplot as plt import numpy as py img=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg')#读取文件 #边界填充 #指定填充边界大小 top_size,bottom_size,left_size,right_size=50,50,50,50 #函数一样只是填充方法type不同 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,borderType=cv2.BORDER_REFLECT) reflect101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT_101) wrap=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP) constant=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_CONSTANT,value=0) #plt.imshow(),cv2.imshow()绘图色调不同,因为cv2是BGR模式,而plt是RGB模式。 plt.subplot(231),plt.imshow(img),plt.title('original') plt.subplot(232),plt.imshow(replicate),plt.title('replicate') plt.subplot(233),plt.imshow(reflect),plt.title('reflect') plt.subplot(234),plt.imshow(reflect101),plt.title('reflect101') plt.subplot(235),plt.imshow(wrap),plt.title('wrap') plt.subplot(236),plt.imshow(constant),plt.title('constant')
数值计算:
import cv2 import matplotlib.pyplot as plt import numpy as py #数值处理 #准备相同shape两张图,为数值处理做准备,若shape不同则采用下面方法resize #img=cv2.resize(img,(281,200)) #或只给出图形倍数之间关系img=cv2.resize(img,(0,0),fx=3,fy=1,长宽比为3). #输出图像坐标轴的数字表示像素点。 mini1=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg') mini2=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-monkey-s.png') print(mini1.shape,mini2.shape) print(mini1[:5,:5,0]) add1=(mini1+mini2)[:5,:5,0] #相当于%256 print(add1) add2=cv2.add(mini1,mini2)[:5,:5,0] #若最大值大于255,则取255 print(add2) #add1与add2 输出结果不同 #图像融合 merge=cv2.addWeighted(mini1,0.5,mini2,0.5,0) #y=ax1+bx2+b,图像融合公式 cv2.imshow("1",merge) cv2.waitKey(0) cv2.destroyAllWindows()
阈值处理