以下内容,皆为原创,制作不易,感谢大家的关注和点赞。
一.读取图片
我们来读取图片,当你用代码读取后,可能会发现。怎么跟上传的图片颜色有些许的不一样。因为OpenCV的颜色通道是BGR,而我们平常用的matplotlib是RGB颜色通道。多少有差异。
import cv2
import numpy as np
import matplotlib.pyplot as plt
girl = cv2.imread("C:/Users/19159/Pictures/Camera Roll/11.png")
# matplotlib显示的图片与现实的图片不一样,因为opencv读进来的图片数据通道不是默认的RGB
# 而是BGR(蓝绿红灯)
plt.imshow(girl)
给大家看一下,OpenCV读取后的图片是什么样子的,再对比原图片。以下第一个是读取后的。
咳咳,抛开图片不谈,其实OpenCV还是有些区别于matplotlib。
二.读取摄像头
这个部分还是挺好玩的,可以控制自己电脑的摄像头,实时显示自己帅气的脸庞。
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
print("无法打开摄像头")
exit()
cv2.namedWindow('video', cv2.WINDOW_NORMAL)
cv2.resizeWindow('video', 640, 480)
# 循环读取摄像头的每一帧
while True:
# 读一帧数据
ret, frame = cap.read()
# 根据ret做判断
if not ret:
print("无法读取摄像头数据")
break
# 显示数据
cv2.imshow('video', frame)
# 设置较短的等待时间,以便视频帧可以快速更新
key = cv2.waitKey(1) & 0xFF # 1毫秒等待时间
if key == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
使用了 OpenCV 库(cv2模块),主要用于从摄像头捕获视频流,并在窗口中实时显示。下面是代码的逐行分析:
import cv2
:导入 OpenCV 库,这是处理图像和视频的基本库。
cap = cv2.VideoCapture(0)
:创建一个 VideoCapture 对象,0
表示默认的摄像头设备。如果计算机有多个摄像头,可以通过更改数字来选择不同的摄像头。
if not cap.isOpened():
:检查摄像头是否成功打开。如果未成功,将打印错误消息并退出程序。
cv2.namedWindow('video', cv2.WINDOW_NORMAL)
:创建一个窗口,用于显示视频流。cv2.WINDOW_NORMAL
表示窗口可以被调整大小。
cv2.resizeWindow('video', 640, 480)
:设置窗口的大小为 640x480 像素。
while True:
:开始一个无限循环,用于连续读取视频帧。
ret, frame = cap.read()
:从摄像头读取一帧图像。ret
是一个布尔值,如果读取成功则为True
,frame
是读取到的图像帧。
if not ret:
:如果ret
为False
,表示无法读取摄像头数据,打印错误消息并退出循环。
cv2.imshow('video', frame)
:将读取到的帧显示在之前创建的窗口中。
key = cv2.waitKey(1) & 0xFF
:等待键盘输入,1
表示等待时间为 1 毫秒。& 0xFF
是为了确保获取的按键值在正确的范围内。
if key == ord('q'):
:如果按下 'q' 键,则退出循环,停止视频捕获。
break
:退出循环。
cap.release()
:释放 VideoCapture 对象,释放与摄像头相关的资源。
cv2.destroyAllWindows()
:销毁所有由 OpenCV 创建的窗口。
创建窗口后,窗口会读取你的摄像头,并实时显示画面,我社恐,就用花露水的贴纸挡一下我。
好了,今天的分享就到这里,感谢大家的关注和点赞。