Python之OpenCV的学习(三)

1.图像的边界填充

边界填充的方式:上、下、左、右

top_size,bottom_size,left_size,right_size = (70,70,70,70)
  • 复制法,复制最边缘的像素
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
  • 反射法,例如:fedcba|abcdefg|gfedcb
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)
  • 反射法,例如:gfedcb|abcdefgh|gfedcba
reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)
  • 外包装法,例如:cdefgh|abcdefgh|abcdefg
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_WRAP)
  • 常量法,常数值填充
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=220)

在这里插入图片描述
2.数值计算

2.1 + 法

img = cv2.imread(path)
img1 = img + 10  # 加10表示的是每一个像素点都加10,整体shape值不变

在这里插入图片描述

  • 只有shape相同的两张图才可以进行相加操作
img2 = img + img 

在这里插入图片描述

  • 相加之后,例如第一个数 34,145 + 145 = 290 > 255,产生越界,由于 dtype 是 uint8,所以,表示为 290 % 256 = 34

2.2 add法

cv2.add(img,img)
  • 没有越界的不变,越界的表示为255

在这里插入图片描述

3.图像融合

  • shape不同的图像通过resize函数进行处理
img1 = cv2.resize(img1,(240,240)) 
res = cv2.addWeighted(img,0.4,img1,0.6,0) # 权重式加法

在这里插入图片描述
4.视频读取

import cv2

vc = cv2.VideoCapture('test.mp4')

# 检查是否打开正确
if vc.isOpened():
    '''vc.read()是一帧一帧的读取,返回两个值
        第一个值:bool类型,若这一帧读取成功,返回True
        第二个值:当前这一帧图像的三维数组
    '''
    open,frame = vc.read()
else:
    open = False

# 遍历每一帧
while open:
    ret,frame = vc.read()
    # 读取完毕,为空,退出
    if frame is None:
        break

    if ret == True:
        # 每一帧图像读取进来转换为灰度图像
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        # 灰度视频输出
        cv2.imshow('result',gray)
        # 彩色视频输出
        # cv2.imshow('result',frame)
        # 指定读取速度并且按退出键退出窗口
        if cv2.waitKey(30) & 0xFF == 27:
            break
# 释放视频
vc.release()
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值