图像边界填充
- 确认填充边界大小:top_size,bottom_size,left_size,right_size=(50,50,50,50)
- 边界填充函数:
- cv2.copyMakeBorder(src,top,bottom,left,right,borderType,value)
- 函数作用:用于自图像周围添加边框,可以在图像的上、下、左、右四个方向添加指定的像素,并指定填充方式;
- 函数参数:
-
src:输入图像
-
top/bottom/left/right:为图像在四个反向要添加的像素数;
-
borderType:边框类型
-
cv2.BORDER_REPLICATE填充:重复最后一个像素;
-
cv2.BORDER_REFLECT填充:边界元素的镜像;
eg:gfedcba|abcdefgh|hgfedcba
-
cv2.BORDER_REFLECT_101填充,
eg: gfedcb|abcdefgh|gfedcba
注意2与3的区别
-
cv2.BORDER_WRAP:将原图像的顶部填充进底部所扩大的区域内,而顶部所扩大的区域则用原图片中底部的内容填充,左右两边也是这个道理
eg:cdefg|abcdefgh|abcde
-
cv2.BORDER_CONSTANT填充:常数填充,即边框都填充成一个固定值;
import cv2 import os os.chdir('e://text') img=cv2.imread('wanzi.png') def cv_show(name,img): cv2.imshow(name,img) cv2.waitKey(3000)#毫秒 cv2.destroyAllWindows() #定义边界填充尺寸 top,bottom,left,right=(50,50,50,50) replicate=cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_REPLICATE) #填充最后一个像素 reflect=cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_REFLECT) #eg:gfedcba|abcdefgh|hgfedcba reflect101=cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_REFLECT_101) #eg: gfedcb|abcdefgh|gfedcba wrap=cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_WRAP) #eg:cdefg|abcdefgh|abcde constant=cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_CONSTANT,value=0) #常数填充,填充为0 #显示图片 cv_show('replicate',replicate) cv_show('reflect',reflect) cv_show('reflect101',reflect101) cv_show('wrap',wrap) cv_show('constant',constant) #保存图片 cv2.imwrite('d://test//markdown//spcs//constant.jpg',constant) cv2.imwrite('d://test//markdown//spcs//replicate.jpg',replicate) cv2.imwrite('d://test//markdown//spcs//reflect.jpg',reflect) cv2.imwrite('d://test//markdown//spcs//reflect101.jpg',reflect101) cv2.imwrite('d://test//markdown//spcs//wrap.jpg',wrap)
-
-
图像融合操作
- 图像尺寸调整
- cv2.resize(img,(w,h)):调整图像img尺寸到w*h;
- cv2.resize(img,(0,0),fx=3,fy=1):将w、h设置为0,fx为x向相对原图的比例,fy为y向相对于原图的比例,fx与fy大于1时图像为放大,小于1时为缩小。
- 图像融合
imgf=cv2.addWeighted(img1,α,img2,β,b)- img1与img2为需要融合的图像
- α和β为两张图的融合系数
- b为图像偏置量
计算方式:imgf=α×img1+β×img2+b
注意:两张可融合的图片必须尺寸一致,如不一致,需通过resize操作调整为一致方可融合
示例代码
import cv2 import os os.chdir('e://text') img1=cv2.imread('wanzi.png') img2=cv2.imread('car.jpg') def cv_show(name,img): cv2.imshow(name,img) cv2.waitKey(0) cv2.destroyAllWindows() print(img1.shape) print(img2.shape) img2=cv2.resize(img2,(396,203)) #注意此句,img.shape的数值时(h,w),而resize需要的输入是(w,h),两者是颠倒的 print(img2.shape) a=cv2.addWeighted(img,1,img2,0.5,0) #注意:相加后,像素中加和超过255的值会被置为255 cv_show('a',a)