opencv 边界填充/数值计算/图像阈值

发布时间 2023-06-13 19:21:08作者: Aneverforget

边界填充

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()

  

阈值处理