OpenCV-视频处理

视频处理

  • 打开摄像头并灰度化显示
  • 将视频转换为灰度
  • 摄像头美颜
  • 获得视频属性
  • 进行特定颜色提取

视频处理概念

视频信号(以下简称为视频)是非常重要的视觉信息来源,它是视觉处理中经常要处理的一类信号。视频由一系列图像构成的,这一系列图像被称为帧,帧是以固定时间间隔从视频中获取的。获取帧的速度称为帧速率,其单位通常使用“帧/秒”表示,如果从视频中提取出独立的帧,就可以使用图像处理的方法对其进行处理,达到处理视频的目的。
OpenCV提供了cv2.VideoCapture类和cv2.VideoWriter类来支持各种类型的视频文件。在不同的操作系统中,它们支持的文件类型可能有所不同,但是在各种操作系统中均支持VAI格式的视频文件
VideoCapture
常用函数包括初始化、打开、帧捕获、释放、属性设置等。
提供了构造函数cv2.VideoCapture(),用于打开摄像头并完成摄像头的初始化工作
捕获对象=cv2.VideoCapture(“摄像头ID号”)

要使用摄像头,需要使用cv2.VideoCapture(0)创建VideoCapture对象,参数0指的是摄像头的编号,如果你电脑上有两个摄像头的话,访问第2个摄像头就可以传入1,依此类推

打开摄像头并灰度化显示

import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
	ret, frame = cap.read()
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

OpenCV-视频处理_第1张图片

将视频转换为灰度

import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
	ret, frame = cap.read()
	frame1=cv2.flip(frame,1)
	gray=cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
	canny=cv2.Canny(gray,80,150)

	cv2.imshow('frame', canny)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

OpenCV-视频处理_第2张图片

摄像头美颜

def meiyan(img):
    rows, cols = img.shape[:2]
    dst = np.zeros((rows, cols, 3), dtype="uint8")
 for i in range(rows):
        for j in range(cols):
            B = 0.272*img[i,j][2] + 0.534*img[i,j][1] + 0.131*img[i,j][0]
            G = 0.349*img[i,j][2] + 0.686*img[i,j][1] + 0.168*img[i,j][0]
            R = 0.393*img[i,j][2] + 0.769*img[i,j][1] + 0.189*img[i,j][0]
            if B>255:
                B = 255
            if G>255:
                G = 255
            if R>255:
                R = 255
            dst[i,j] = np.uint8((B, G, R))
    return dst

OpenCV-视频处理_第3张图片

获得视频属性

import cv2
import numpy as np
cap = cv2.VideoCapture(0)
width, height = cap.get(3), cap.get(4)
while(cap.isOpened()):
    ret, frame = cap.read()
    frame = meiyan(frame)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
print(width, height)

视频处理

import cv2
cap = cv2.VideoCapture('caruav.mp4')
while(cap.isOpened()):
    ret, frame = cap.read()
    frame=cv2.Canny(frame,100,200)
    cv2.imshow('frame', frame)    
    if cv2.waitKey(25) == ord('q'):
        break
        
cap.release()
cv2.destroyAllWindows()

OpenCV-视频处理_第4张图片

进行特定颜色提取

import cv2
import numpy as np
lowerb_hsv = np.array([156,43,46])
upperb_hsv = np.array([180,255,255])
cap = cv2.VideoCapture('redone.mp4')
while(cap.isOpened()):
    ret, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, lowerb_hsv, upperb_hsv)
    redball = cv2.bitwise_and(frame,frame,mask=mask)
    cv2.imshow('frame', redball)    
    if cv2.waitKey(25) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

OpenCV-视频处理_第5张图片

import cv2
capture = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'FMP4')
outfile = cv2.VideoWriter('output1.mp4', fourcc, 25, (640, 480))
while(capture.isOpened()):
    ret, frame = capture.read()
    if ret:
        outfile.write(frame)  # 写入文件
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) == ord('q'):
            break
    else:
        break
capture.release()
outfile.release()
cv2.destroyAllWindows()

你可能感兴趣的:(OpenCV,opencv)