1、opencv创建窗口、图片视频的读取与写入 2022-08-20

创建窗口

import cv2

# 创建窗口 cv2.WINDOW_AUTOSIZE 不允许改变窗口大小,cv2.WINDOW_NORMAL允许改变窗口大小
cv2.namedWindow("window",cv2.WINDOW_NORMAL)

# 改变窗口大小
cv2.resizeWindow("window",800,600)

# 展示窗口
cv2.imshow("window",0)

# 等待按键,返回按键的ascii码(ord()是计算ascii码的函数)
c = cv2.waitKey(0)

# 如果按键是q,则程序终止
# c是int类型,十六位,ascii码为8位,把十六位中的最后八位取出来做对比,在python中可加可不加
if c & 0xFF== ord("q"):
    cv2.destroyAllWindows()

图片的读取与写入

import cv2 as cv
import matplotlib.pyplot as plt

# 读取并显示图片
dir_root0 = r"D:\my_code\STUDY\opencv_\R-C.jpg"

# 默认是彩色 也可以设置为灰色
img = cv.imread(dir_root0)

# plt显示的图片与opencv读进来的格式不一样
# plt--RGB  cv--BGR
plt.imshow(img)
plt.show()

while True:
    # tab键与空格键混合用,会报缩进问题
    cv.imshow("nice",img)
    c = cv.waitKey(0)  # c为终结程序时按键所对应的ascii码值
    if c & 0xFF== ord("q"):
        break
    elif c & 0xFF== ord("s"):
        # 如果按键为s,则保存图片
        cv.imwrite(r".\123.jpg",img)
    else:
        print(c)
    cv.destroyAllWindows()

视频的读取与写入

import cv2 as cv
import glob

video_path = r"D:\my_code\SYUDY\opencv_\nn.mp4"

视频的读取并逐帧展示

capture = cv.VideoCapture(video_path)  

while True:
    # .read()读取一帧数据,返回标记和一帧数据,如果读到数据,标记为Ture,否则为False
    ret,frame = capture.read()
    if not ret:
       break
    else:
        cv.imshow("img", frame)
        # waitKey参数只能是整数,等待时间,为ms
        cv.waitKey(2)
cv.destroyAllWindows()

使用电脑摄像头录制视频并切割成图片保存至本地

capture = cv.VideoCapture(0)  # 读取摄像头,0为设备id,多个摄像头时可以指定

while capture.isOpened():
    ret,frame = capture.read()
    cv.imwrite("./{}ne.jpg".format(i),frame)
    cv.destroyAllWindows()
    if frame == None:
    	break
capture.release()

将多张图片组合为视频

# 视频的写入(摄像头或视频读取方式)
# fourcc = cv.VideoWriter_fourcc(*"mp4v")  # MP4格式
fourcc = cv.VideoWriter_fourcc(*"VVID")    # avi格式

# 视频高宽一定要符合图像大小,元组中第一个元素为宽,第二个元素为高
# video = cv.VideoWriter("./new_video.mp4",fourcc,27,(720,1280))
video = cv.VideoWriter("./new_video.avi",fourcc,27,(720,1280))

# 视频的写入(图像读取方式)
imgs = glob.glob("./frame/*.jpg")
for img in imgs:
    frame = cv.imread(img)
    video.write(frame)

# 释放资源
video.release()
cv.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要打开并保存视频,您可以使用Python中的OpenCV库。以下是一个示例代码,展示了如何打开视频、逐帧读取视频、处理每一帧,并将处理后的帧保存为新的视频文件: ```python import cv2 # 打开原始视频文件 cap = cv2.VideoCapture('input_video.mp4') # 检查视频是否成功打开 if not cap.isOpened(): print("无法打开视频文件") exit() # 获取原始视频的基本信息 fps = cap.get(cv2.CAP_PROP_FPS) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建VideoWriter对象,用于保存处理后的视频 fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output_video.avi', fourcc, fps, (width, height)) while True: # 逐帧读取视频 ret, frame = cap.read() # 检查是否到达视频末尾 if not ret: break # 在每一帧上进行处理(这里只是一个示例,您可以根据需要进行自定义操作) processed_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将处理后的帧写入输出视频文件 out.write(processed_frame) # 在窗口中展示每一帧 cv2.imshow('Video', processed_frame) # 按下'q'键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放cap和out对象,关闭窗口 cap.release() out.release() cv2.destroyAllWindows() ``` 请确保将代码中的`input_video.mp4`替换为实际的输入视频文件路径,将`output_video.avi`替换为您想要保存的输出视频文件路径。这段代码将逐帧读取输入视频,并在每一帧上进行处理(在示例中,将每一帧转换为灰度图像),最后将处理后的帧写入输出视频文件。同时,每一帧也会在一个窗口中展示出来。按下 'q' 键可以退出循环。 希望这可以满足您的需求!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值