瑶海区网站建设,东莞建站网站建设产品推广,php 茶叶网站,商业信息发布平台目录
前提步骤
打开树莓派摄像头
查看是否有图像#xff0c;登录游览器打开树莓派IP地址的8080端口
获取mjpg的视频流url
代码
先设定好mjpg的视频流的url
利用opencv库中的v2.VideoCapture类读取mjpg视频流 cv2.VideoCapture()
检查摄像头是否成功打开#xff0c;…目录
前提步骤
打开树莓派摄像头
查看是否有图像登录游览器打开树莓派IP地址的8080端口
获取mjpg的视频流url
代码
先设定好mjpg的视频流的url
利用opencv库中的v2.VideoCapture类读取mjpg视频流 cv2.VideoCapture()
检查摄像头是否成功打开如果没有则打印错误消息并退出程序 cap.isOpened()
创建一个空的numpy数组 np.empty()
从视频中读取一帧图像 cap.read()
在窗口中显示图像输出 cv2.imshow
延时50毫秒播放下一帧图像 cv2.waitKey 全部代码 将帧保存为图像 cv2.imwrite() 读取图像 cv2.imread() cv2.cvtColor
释放VideoCapture对象并关闭视频文件 cap.release() 前提步骤
树莓派可以用mjpg-streame库开启摄像头安装好python
打开树莓派摄像头
进入mjpg库 cd mjpg-streamer/mjpg-streamer-experimental 启动摄像头脚本 ./start.sh
查看是否有图像登录游览器打开树莓派IP地址的8080端口
http://xxx.xxx.xxx.xxx:8080
获取mjpg的视频流url
点开stream复制当前的网址url
http://xxx.xxx.xxx.xxx:8080/?actionstream
代码
先设定好mjpg的视频流的url
ip_address 172.20.10.14
port_number 8080
url fhttp://{ip_address}:{port_number}/?actionstream
利用opencv库中的v2.VideoCapture类读取mjpg视频流 cv2.VideoCapture()
使用cv2.VideoCapture类的一个实例可以通过传入摄像头设备ID或视频文件路径来连接摄像头或读取视频文件。例如cv2.VideoCapture(0)表示打开笔记本的内置摄像头cv2.VideoCapture(..\test.avi)表示打开指定路径的视频文件。 cap cv2.VideoCapture(fhttp://{ip_address}:{port_number}/?actionstream)
检查摄像头是否成功打开如果没有则打印错误消息并退出程序 cap.isOpened()
cap.isOpened()是OpenCV中VideoCapture类的一个函数用于检查视频是否成功打开。如果返回值为True表示视频已经成功打开反之则没有成功打开。 if not cap.isOpened():print(无法打开摄像头)exit()
创建一个空的numpy数组 np.empty()
得到一个240行320列3个通道颜色通道的数组每个元素都是一个无符号8位整数0-255。该数组的形状为(240, 320, 3)并且数据类型为np.uint8。用于存储图像数据。许多图像格式例如RGB都有三个颜色通道因此这个数组可以用于存储图像数据。在使用这个数组时你可以像处理其他numpy数组一样处理它。 # 创建一个空的numpy数组output来存储图像数据
output np.empty((240, 320, 3), dtypenp.uint8)
从视频中读取一帧图像 cap.read()
cap.read() 是 OpenCV 中 VideoCapture 类的函数该函数返回一个布尔值True/False以及一个帧图像。如果帧读取正确则返回 True否则返回 False。ret 表示读取帧是否正确frame 则是当前帧的图像。如果 ret 为 True则可以处理 frame 图像如果 ret 为 False则表明视频已经读取完毕。 ret, frame cap.read()
在窗口中显示图像输出 cv2.imshow
cv2.imshow接受两个参数窗口的名称和要显示的图像窗口名称是output要显示的图像是变量output。 cv2.imshow(output, output)
延时50毫秒播放下一帧图像 cv2.waitKey
cv2.waitKey是 OpenCV 的一个函数用于等待并处理键盘事件。50 是等待的毫秒数。这意味着如果用户在 50 毫秒内没有按任何键则函数会返回当前活动的热键。否则如果有按键被按下它会被立即返回 cv2.waitKey(50)
全部代码
import cv2
import numpy as npip_address 172.20.10.14
port_number 8080cap cv2.VideoCapture(fhttp://{ip_address}:{port_number}/?actionstream)if not cap.isOpened():print(无法打开摄像头)exit()output np.empty((240, 320, 3), dtypenp.uint8)while True:ret, output cap.read()cv2.imshow(output, output)cv2.waitKey(50) 将帧保存为图像 cv2.imwrite()
cv2.imwrite() 是 OpenCV 库中的一个函数用于将图像写入文件两个参数输出文件名和要写入的图像。使用 cv2.imwrite() 将 img 写入名为 image.jpg 的文件中。 cv2.imwrite(capture.jpg, output) 读取图像 cv2.imread() cv2.cvtColor
cv2.imread() 是 OpenCV 库中的一个函数用于读取图像文件一个参数即要读取的图像文件的路径如果图像文件不存在或无法读取cv2.imread() 将返回 None。如果图像文件存在并成功读取则将返回一个 NumPy 数组其中包含图像的像素值。cv2.imread() 函数默认使用 BGR 颜色空间而非 RGB 颜色空间。如果需要在处理图像时使用 RGB 颜色空间可以使用 cv2.cvtColor() 函数将 BGR 图像转换为 RGB 图像。
img cv2.imread(input.jpg) #如果是BGR图像
img_rgb cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_rgb 是通过将 img 从 BGR 颜色空间转换为 RGB 颜色空间得到的。在 OpenCV 中图像的默认格式是 BGR而大多数其他图像处理库如 Python 的 PIL 或 matplotlib使用 RGB 颜色空间。因此如果你需要在这些库中处理 OpenCV 图像可能需要进行颜色空间的转换。mg_rgb 通常指的是 RGB 图像而 img 通常指的是 BGR 图像。虽然它们在数值上是一样的因为它们表示的是同一幅图像的像素值但在处理图像时使用哪个变量取决于你的需求。例如如果你需要将图像显示在 matplotlib 中你可能需要使用 img_rgb。如果你需要处理图像的颜色通道顺序你可能需要使用 img。总的来说虽然 img_rgb 和 img 在数值上相同但它们的使用和语义上有一些区别。
释放VideoCapture对象并关闭视频文件 cap.release()
cap.release()是OpenCV库中的一个函数用于释放VideoCapture对象并关闭视频文件使用cv2.VideoCapture()创建一个VideoCapture对象后这个对象会占用视频文件的相关资源比如文件句柄、内存等。当你完成视频的读取后应该调用cap.release()释放这些资源以避免资源泄漏和占用。 # 释放VideoCapture对象并关闭视频文件
cap.release() 在调用cap.release()后你不能再使用cap对象否则会抛出异常。如果你需要再次读取视频文件应该重新创建一个新的VideoCapture对象。