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() #这条语句加不加都能弹出图像。 |
标签:
opencv
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律