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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值