opencv常用函数

1)读视频

vc=cv2.VideoCapture('E:/**/**/**/**/guzhang_333.MP4')
ret = True
while ret:
        ret, frame = vc.read()
        if ret:
            #进行操作
vc.release()

2)保存视频

def mk_video_writer(vc, video_path):
    #print("保存视频路径: ", video_path)
    width = int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取原视频的宽
    height = int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取原视频的搞
    fps = vc.get(cv2.CAP_PROP_FPS) #帧率
    fourcc = cv2.VideoWriter_fourcc(*"mp4v") #视频的编码
    out = cv2.VideoWriter(video_path, fourcc, fps, (width, height))
    print(video_path)
    return out

 或者下面的方法

def mk_video_writer(vc, path,frame_width, frame_height):
    fps_video = vc.get(cv2.CAP_PROP_FPS) #帧率 ,依据需求更改此句
    fourcc = cv2.VideoWriter_fourcc(*"mp4v")
    video_writer = cv2.VideoWriter(path, fourcc, fps_video, (frame_width, frame_height)) 
    return video_writer
#其他参数我省略了,记得在项目里灵活运用
frame_width = 112
frame_height = 112
video_writer = mk_video_writer(vc, after_video_path,frame_width, frame_height)

在视频的循环中,保存每一帧

video_writer.write(frame)

循环结束后,记得释放

video_writer.release()

3)读取图片

image = cv2.imread('E:/migu/test/img1.png')

 4)将图片或者帧变成灰度图

img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

5)图片或帧的截取(灰度图的操作)

其实跟二维矩阵的切片一样

crop = frame[x1:x2,y1:y2]

6)resize操作

img = cv2.resize(img,(width,height))

将原图片转化为宽和长分别为300,300的图片。width和height可以自己任意指定,不论大小。 

resize(InputArray src, OutputArray dst, Size dsize, 
        double fx=0, double fy=0, int interpolation=INTER_LINEAR )

 7)padding操作

cv2.copyMakeBorder(src,top,bottom,left,right,borderType,value)

 cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)
cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射
cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT:和上面类似,但是有一些细微的不同
cv2.BORDER_REPLICATE:使用最边界的像素值代替
cv2.BORDER_WRAP:不知道怎么解释,直接看吧

value:如果borderType为cv2.BORDER_CONSTANT时需要填充的常数值。

pad_img = cv2.copyMakeBorder(resize_crop, top_padding, bottom_padding, left_padding, right_padding, cv2.BORDER_CONSTANT, value=[0,0,0]) #从图像边界向上,下,左,右扩的像素数目

8)得到视频帧率

max_fps = vc.get(cv2.CAP_PROP_FPS)

9)得到视频帧数

 frame_num = vc.get(cv2.CAP_PROP_FRAME_COUNT)

10)获得视频的编码

fourcc = int(vc.get(cv2CAP_PROP_FOURCC)) #视频的编码

11)获得视频的宽高

width = int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取原视频的宽
height = int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取原视频的搞

12)cv2.putText

image:要在其上绘制文本的图像。
text:要绘制的文本字符串。
org:它是图像中文本字符串左下角的坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
font:它表示字体类型。一些字体类型是FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN等。
fontScale:字体比例因子乘以font-specific基本大小。
color:它是要绘制的文本字符串的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
thickness:它是线的粗细像素。
lineType:这是一个可选参数,它给出了要使用的行的类型。
bottomLeftOrigin:这是一个可选参数。如果为true,则图像数据原点位于左下角。否则,它位于左上角。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情的阅读机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值