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

边界填充

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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')

  

 

数值计算:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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()

  

阈值处理

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import cv2
import matplotlib.pyplot as plt
import numpy as py
img=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg')#读取文件
ret1,BINARY=cv2.threshold(img,150,255,cv2.THRESH_BINARY)#ret1返回设置的阈值
ret2,BINARY_INV=cv2.threshold(img,150,255,cv2.THRESH_BINARY_INV)#反转,原来是大于阈值的去255,反转后小于阈值的取255
ret3,TRUNC=cv2.threshold(img,150,255,cv2.THRESH_TRUNC)
ret4,TOZERO=cv2.threshold(img,150,255,cv2.THRESH_TOZERO_INV)#小于阈值的to zero; 反转后大于阈值的to zero.
ret5,TOZERO_INV=cv2.threshold(img,150,255,cv2.THRESH_TOZERO)
title=['ORIGINAL','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images=[img,BINARY,BINARY_INV,TRUNC,TOZERO,TOZERO_INV]
for i in range(6):
    plt.subplot(2,3,i+1),plt.title(title[i]),plt.imshow(images[i],'gray')
    plt.xticks([]),plt.yticks([])#去除x,y轴数字标识
plt.show()#这条语句加不加都能弹出图像。

  

 

posted @   Aneverforget  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示