TE云端公开课--OpenCV实战课3

学习知识最好从官方文档中学习:Opencv官方教程


一、图片操作

1.1 导入图片

代码展示:

# 导入 opencv-python
import cv2

# 读入本地文件  使用的相对路径
img = cv2.imread('logo.png')

# 在窗口中显示图像
cv2.imshow('Display Window',img)

# 获取按键动作 按下s键 将图像保存本地
# 0表示永久等待键盘按键 15 表示15毫秒检测一次按键
k = cv2.waitKey(0) 
if  k == ord('s'):
	cv2.imwrite('saved_img.png',img)

cv2.destoryAllWindows()

在这里插入图片描述

为什么导入的图片背景是白色,保存的时候是黑色?
cv2:存储的图片格式是bgr 白色会变为黑色

1.2 检验导入图片

在这里插入图片描述

1.3 步骤摄像头画面

代码如下(示例):

# 获取、处理、展示摄像头捕获的画面
# 2021-03-06

# 导入 opencv-python
import cv2

# 捕获摄像头,传入摄像头索引号,默认 摄像头索引为0; 也可以传入视频文件
# 一般的电脑就是默认的摄像头
cap = cv2.VideoCapture(0)

# 校验摄像头是否捕获成功,如果未成功则输出提示
if not cap.isOpened():
	print('open cap error!')
	exit()
# 无限循环
while True:
	# 获取摄像头捕获的画面 返回ret和frame
	# ret 的True/False 反应是否捕获成功,frame 是画面
	ret , frame = cap.read()
	# 校验画面真是否正确捕获,如果未成功则输出提示,跳出循环
	if not ret :
		print('无法获取画面帧')
		break
		
	# 对画面帧进行处理
	# 这里是将画面帧转化为灰度图
	gray = cv2.cvtColor(frame,cv2.OLOR_BGR2GRAY)
	# 窗口中显示处理之后的画面
	cv2.imshow('frame_window',gray)
	# 获取键盘按键动作 如果按下q键 就跳出循环
	if cv2.waitKey(1) == ord('q'):
		break
# 关闭摄像头
cv2.release()
# 关闭所有窗口
cv2.destoryAllwindows()

(我的也可以运行,就不在此展示截图了)
在这里插入图片描述

1.4 处理本地视频文件

代码如下(示例):

import cv2

# 捕获摄像头,传入摄像头索引号,默认 摄像头索引为0; 也可以传入视频文件
# 一般的电脑就是默认的摄像头
cap = cv2.VideoCapture('test.mp4')

# 校验摄像头是否捕获成功,如果未成功则输出提示
if not cap.isOpened():
	print('open cap error!')
	exit()
# 获取视频的宽、高信息,cap.get()传入的参数可以是0-18的整数,也可以设置宽高等参数信息
print('WIDTH',cap.get(3))
print('HEIGHT',cap.get(4))

# 无限循环
while True:
	# 逐帧获取视频画面 返回ret和frame
	# ret 的True/False 反应是否捕获成功,frame 是画面
	ret , frame = cap.read()
	# 校验画面真是否正确捕获,如果未成功则输出提示,跳出循环
	if not ret :
		print('无法获取画面帧')
		break
		
	# 对画面帧进行处理
	# 这里是将画面帧转化为灰度图
	gray = cv2.cvtColor(frame,cv2.OLOR_BGR2GRAY)
	# 窗口中显示处理之后的画面
	cv2.imshow('frame_window',gray)
	# 获取键盘按键动作 如果按下q键 就跳出循环
	# 25ms是恰好的,如果太小,播放速度会很快如果太大 播放速度会很慢
	if cv2.waitKey(25) == ord('q'):
		break
# 关闭视频文件
cap.release()
# 关闭所有窗口
cv2.destoryAllwindows()

运行结果:
在这里插入图片描述

最后为什么会输出无法获取画面帧
答:视频处理到最后一帧,ret返回false

1.5 保存视频

# 保存处理后的视频
# 2021 03 06

import numpy as numpy
import cv2 as cv

# 获取摄像头
cap = cv.VideoCapture(0)

# 指定VideoWritter的fourCC视频编码
# fourCC视频编码:视频数据格式
fourcc = cv.VideoWriter_fourcc(*'DIVX')

# 指定输出文件、 fourCC视频编码、FPS帧率、画面大小
out = cv.VideoWriter('output.avi',fourcc,20.0,(640,480))

while cap.isOpened():
    ret,frame = cap.read()
    if not ret:
        print('无法打开摄像头')
        break
    
    # 对画面帧进行处理 这里是将画面帧翻转  flip:即翻转
    frame = cv.flip(frame,0)

    # 将处理后的画面逐帧保存至output文件中
    out.write(frame)
    #将处理后的画面助阵显示在窗口中
    cv.imshow('frame',frame)

    if cv.waitKey(1) == ord('q'):
        break

# 关闭摄像头 视频保存器 窗口
cap.release()  
out.release() #关闭视频保存器   这个很重要
cv.destroyAllWindows()

在这里插入图片描述


二、⭐实战–车辆识别

图文教程 OpenVINO 安装+demo运行 + VS配置

这个实战涉及了卷积神经网络的知识,以我目前的知识水平无法理解其中的代码以及处理过程,我没有听懂,故在此不做展示,以后达到一定说平,会及时补上。(需要该实战的代码可以留言)


猜你喜欢

转载自blog.csdn.net/HG0724/article/details/114446003