初识opencv

opencv-start

import cv2 as cv

img = cv.imread("./images/1.jpg")  # 读入图片
# 创建一个窗口,第一个参数是窗口名, 第二个参数代表自适应大小,也可指定尺寸
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
# 指定窗口显示图片,(窗口名, 图片)
cv.imshow("input image", img)
# 等有键输入或者1000ms后自动将窗口消除,0表示只有键输入才结束窗口
# 返回值为输入键的ASCII值
# 当指定时间内没有任何输入时返回-1
cv.waitKey(1000)
# 删除我们建立的所有窗口。
# 删除特定的窗口可以使用 cv.destroyWindow(要删除的窗口名)
cv.destroyAllWindows()

图像的加载与保存

import cv2 as cv
import time

def get_img_info(image):
    print("图像类型:", type(image))
    print("shape:", image.shape)
    print("size: w*h = ", image.size)
    print("dtype:", image.dtype)
    print(image)

def save_image(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)  # 将图片转为灰度图
    cv.imwrite("./images/output.png", gray)  # 将保存到output.png


# 获取视频
def video_demo():
    # capture.get(propId) 可以获得视频的参数信息propId: 0~18
    # capture.set(propId,value) 修改指定参数的值
    # capture.get(3) 和 capture.get(4) 查看每一帧的宽和高
    # ret=capture.set(3,320) 和 ret=capture.set(4,240) 将宽高修改为 320X240
    # 参数是摄像头的索引号,或是视频文件的路径

    capture = cv.VideoCapture(0)
    print("type:", type(capture))

    while True:
        # 获取相机图像
        # ret的值为True/False用来标记是否读取成功
        # frame保存的是每一帧图片
        ret, frame = capture.read()
        # 1代表将图片水平反转, 0为竖直
        frame = cv.flip(frame, 1)
        print("ret:", ret)
        # 将每一帧图片放入到video窗口
        cv.imshow("window img", frame)
        # waitKey可以用来控制视频播放时间(即每一帧的刷新时间)
        c = cv.waitKey(25)&0xFF  # 64bit系统需要加&0xFF
        if c == 27:  # Esc
            break

# 保存视频
def save_video():
    cap = cv.VideoCapture(0)
    # 用来确定视频的编码格式,四个字符用来表示压缩帧的codec
    fourcc = cv.VideoWriter_fourcc(*"mp4v")
    # 参数: ("路径", 编码格式, 播放频率, 帧的大小, 是否保存为彩图默认为True)
    out = cv.VideoWriter("./images/output.mp4", fourcc, 25.0, (640, 480))
    while cap.isOpened():  # 是否初始化成功
        ret, frame = cap.read()
        if not ret:
            break
        out.write(frame)
        print(frame.shape)
        cv.imshow('frame', frame)
        if cv.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    out.release()

if __name__=="__main__":
    # image = cv.imread("./images/1.jpg")
    # cv.namedWindow("window img", cv.WINDOW_AUTOSIZE)
    # cv.imshow("window img", image)

    # get_img_info(image)
    # save_image(image)
    # video_demo()
    save_video()

    cv.waitKey(1000)
    cv.destroyAllWindows()
    cv.waitKey(0)
    cv.waitKey(0)
    cv.waitKey(0)
    cv.waitKey(0)

cv.VideoWriter_fourcc() 函数的参数不同的系统所支持的编码不同

分为以下几种

cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’) = MPEG-1 codec
cv2.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’) = motion-jpeg codec --> mp4v
cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec --> avi
cv2.VideoWriter_fourcc(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
cv2.VideoWriter_fourcc(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值