CV - hw1

作者: 谢小帅 | 来源:发表于2018-12-09 20:31 被阅读5次
  1. 视频回放:不断读取摄像头视频并回放
import cv2

"""
视频回放:不断读取摄像头视频并回放
"""

cap = cv2.VideoCapture(0)
video_w = 640
video_h = 480
cap.set(3, video_w)
cap.set(4, video_h)

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        cv2.imshow('video', frame)

    if cv2.waitKey(10) & 0xFF == 27:  # esc 退出
        break

cv2.destroyAllWindows()
cap.release()

2.键盘读取:按空格键开始录视频,再按空格键录视频停止

import cv2
import datetime

"""
键盘读取:按空格键开始录视频,再按空格键录视频停止
"""

cap = cv2.VideoCapture(0)
video_w = 640
video_h = 480
cap.set(3, video_w)
cap.set(4, video_h)

# 设置视频的四字符代码
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # FourCC: Four-Character Codes 视频四字符代码

RECORD = False

vw = None
cnt = 0

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        cv2.imshow('video', frame)

        if cv2.waitKey(1) & 0xFF == ord(' '):
            print('press space')
            RECORD = not RECORD

            if RECORD:
                # 第1次按下空格,create VideoWriter
                cnt += 1
                vname = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + '.avi'
                vw = cv2.VideoWriter(vname, fourcc, 10, (video_w, video_h))
                print('record', cnt)
            else:
                # 第2次按下空格,release VideoWriter
                if vw:
                    vw.release()
                    print('close', cnt)

        if RECORD:
            vw.write(frame)

        if cv2.waitKey(10) & 0xFF == 27:  # esc 退出
            break

cv2.destroyAllWindows()
cap.release()
  1. 鼠标读取:按鼠标左键,可以在视频中画红线
import cv2

"""
鼠标读取:按鼠标左键,可以在视频中画红线
"""

cap = cv2.VideoCapture(0)
video_w = 640
video_h = 480
cap.set(3, video_w)
cap.set(4, video_h)

pts = []


def save_line_pts(event, x, y, LBUTTONDOWNs, param):
    global pts
    if event == cv2.EVENT_LBUTTONDOWN:
        pts.append((x, y))
    elif event == cv2.EVENT_MOUSEMOVE and LBUTTONDOWNs == cv2.EVENT_FLAG_LBUTTON:
        pts.append((x, y))


cv2.namedWindow('video')
cv2.setMouseCallback('video', save_line_pts)

while cap.isOpened():
    ret, frame = cap.read()
    # 先划线 再显示frame
    for i in range(len(pts) - 1):
        cv2.line(frame, pts[i], pts[i + 1], (0, 0, 255), 3)
    cv2.imshow('video', frame)
    if cv2.waitKey(10) & 0xFF == 27:  # esc 退出
        break

cv2.destroyAllWindows()
cap.release()
  1. 三个功能整合
import cv2
import datetime

"""
proj1
1.视频回放:不断读取摄像头视频并回放
2.键盘读取:按空格键开始录视频,再按空格键录视频停止
3.鼠标读取:按鼠标左键,可以在视频中画红线
"""

cap = cv2.VideoCapture(0)
video_w = 640
video_h = 480
cap.set(3, video_w)
cap.set(4, video_h)

pts = []


def save_line_pts(event, x, y, LBUTTONDOWNs, param):
    global pts
    if event == cv2.EVENT_LBUTTONDOWN:
        pts.append((x, y))
    elif event == cv2.EVENT_MOUSEMOVE and LBUTTONDOWNs == cv2.EVENT_FLAG_LBUTTON:
        pts.append((x, y))


cv2.namedWindow('video')
cv2.setMouseCallback('video', save_line_pts)

# 设置视频的四字符代码
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # FourCC: Four-Character Codes 视频四字符代码

RECORD = False
vw = None
cnt = 0

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        # 先划线 再显示frame
        for i in range(len(pts) - 1):
            cv2.line(frame, pts[i], pts[i + 1], (0, 0, 255), 3)
        cv2.imshow('video', frame)

        # 按下空格键 开始一个视频的录制
        if cv2.waitKey(1) & 0xFF == ord(' '):
            print('press space')
            RECORD = not RECORD

            if RECORD:
                # 第1次按下空格,create VideoWriter
                cnt += 1
                vname = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + '.avi'
                vw = cv2.VideoWriter(vname, fourcc, 10, (video_w, video_h))
                print('record', cnt)
            else:
                # 第2次按下空格,release VideoWriter
                if vw:
                    vw.release()
                    print('close', cnt)
            pts = []  # 点集置空,重新开始

        if RECORD:
            vw.write(frame)

        if cv2.waitKey(10) & 0xFF == 27:  # esc 退出
            break

cv2.destroyAllWindows()
cap.release()

相关文章

  • CV - hw1

    视频回放:不断读取摄像头视频并回放 2.键盘读取:按空格键开始录视频,再按空格键录视频停止 鼠标读取:按鼠标左键,...

  • IELTS HW

    SPEAKING (Before Thursday) HW1: Describe a website send m...

  • 凯撒密码破译

    凯撒密码破译 from my csdn blog 信息安全原理 hw1 Caesar: AWPLDPPYNCJA...

  • 1-3-提取特征

    cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2...

  • HW1

    # HomeWork 1 #### 赵天啸 基科63 2016012258 ------ 1. - 对有限维实...

  • HW1

  • HW1

    1. CMU 与美国国防部合作提出 CMM/CMMI 模型,解决了美国国防部估软件供应商能力的要求;CMM/CMM...

  • B3. Main Window-2

    |CV |当双击“CV”时,树状图上将展开注册的CV变量。当单击CV时,容器区域将显示CV面板。|| ------...

  • OpenCV-Python教程:4.在OpenCV里的绘制函数

    函数: cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellips...

  • CV details

    CV 细节 原文:**CV Details ** 2016.7.1

网友评论

      本文标题:CV - hw1

      本文链接:https://www.haomeiwen.com/subject/ltwkhqtx.html