-
2020-12-03 20:12:30
一、环境搭建(略)
首先还是树莓派的环境安装,实现打开摄像头的基础就是必须安装好环境。
一个是python 2.7,需要安装numpy支持;另一个是获取摄像头会用到opencv,opencv是计算机视觉库(树莓派安装的是最新的3.5版本opencv)。
二、实现过程
ython通过opencv 模块来打开摄像头,代码精简,比较容易理解;
整体思路:
1.导入所需的numpy和opencv的模块。
2.获取视频流
3.读取获得的视频流,并且通过窗体显示出来
4.释放获取对象,关闭窗口
整个程序的源代码如下:
# created by Lang based on python 2.7
## 11/01/2018 11:05:45
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(1):
# get a frame
ret, frame = cap.read()
# show a frame
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
还有个phthon3版本
import numpy as np
import cv2
cap = cv2.VideoCapture(0) # 从摄像头中取得视频
# 获取视频播放界面长宽
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5)
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5)
# 定义编码器 创建 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use the lower case
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (width, height))
while(cap.isOpened()):
#读取帧摄像头
ret, frame = cap.read()
if ret == True:
#输出当前帧
out.write(frame)
cv2.imshow('My Camera',frame)
#键盘按 Q 退出
if (cv2.waitKey(1) & 0xFF) == ord('q'):
break
else:
break
# 释放资源
out.release()
cap.release()
cv2.destroyAllWindows()
编写这个程序过程中,感觉到python语言是如此简洁,短短几句代码就可以实现这样的功能,感觉实在是太强了。
更多相关内容 -
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2020-09-18 07:43:37今天小编就为大家分享一篇python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Python控制USB摄像头打开并读取一帧图片保存在电脑里
2021-05-04 17:13:07二、Python打开USB摄像头并保存图片程序 一、USB摄像头与电脑摄像头有何不同? (我是菜鸟,如下文章中若有错误,还希望各位大佬指正!谢谢!) 我理解的是没啥不同。。有些电脑是没有自带摄像头的,所以常常会连接...之前是在打一个比赛,用USB摄像头代替电脑摄像头单纯只是想让作品显得高大上一点呜呜,本来想用OV7725或者OV7670的,奈何实力不允许,搞不出来~
一、USB摄像头与电脑摄像头有何不同?
(我是菜鸟,如下文章中若有错误,还希望各位大佬指正!谢谢!)
我理解的是没啥不同。。有些电脑是没有自带摄像头的,所以常常会连接USB摄像头来代替电脑摄像头,如果是电脑有自带摄像头,那需要在设备管理器中右击电脑摄像头将它禁用,禁用后你打开的USB摄像头就可以完全代替电脑摄像头了,使用python指令打开摄像头时打开的就是USB摄像头
(如果不知道哪个是电脑摄像头,将USB摄像头拔掉刷新后留下来的就是电脑摄像头)
二、Python打开USB摄像头并保存图片程序
USB摄像头和电脑摄像头程序是一样的
#此程序功能是用Python控制打开USB摄像头,拍照后将图片保存在本地 #coding:utf-8 import cv2 cap = cv2.VideoCapture(0) index = 1 while(cap.isOpened()): ret, frame = cap.read() cv2.imshow("USB",frame) k = cv2.waitKey(1) & 0xFF if k == ord('s'): #按下s(save)键,进入保存图片操作 cv2.imwrite("C:/Users/xiaoyan/Desktop/fruit" + str(index) + ".jpg", frame)#这个fruit是图片的命名 index += 1 elif k == ord('q'): #按下q(quit)键,程序退出 break cap.release() cv2.destroyAllWindows()
注意:上面的s和q是需要英文输入,如果没有得到保存图片可能是按的s键是中文输入的,可以用打印函数测试有无保存成功:
对python打开摄像头感兴趣的朋友也可以再看看用Python实现将手机摄像头画面(彩色或黑白)传到电脑端并且显示这篇博客,对上面代码有什么不理解的也可以看看,我在那篇博客中有详细解释,这里就不说啦~
希望有你有帮助!
-
Python通过cv2读取多个USB摄像头
2020-09-18 17:47:08主要为大家详细介绍了Python通过cv2读取多个USB摄像头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
python中使用opencv无法打开usb摄像头的问题
2021-11-20 16:16:43今天终于解决了自己在python中使用opencv无法打开usb摄像头的问题,太坑了,感觉自己好蠢,哈哈哈,特此记录。 1.首先是打开在python中使用opencv打开电脑摄像头的代码如下: #1.引入cv2 import cv2 #2.主函数 if _...今天终于解决了自己在python中使用opencv无法打开usb摄像头的问题,太坑了,感觉自己好蠢,哈哈哈,特此记录。
1.首先是打开在python中使用opencv打开电脑摄像头的代码如下:
#1.引入cv2 import cv2 #2.主函数 if __name__ == '__main__': #3.打开笔记本摄像头 cap = cv2.VideoCapture(0) assert cap.isOpened(), 'Cannot capture source' #摄像头没有正常打开则报错 #4.摄像头能打开则获取图像帧,显示图像 while cap.isOpened(): #read()函数返回两个参数,第一个为参数为bool值,表示是否获取到图像, #第二个参数为当前帧图像 ret, frame = cap.read() # 将获取到的当前帧水品翻转 # 第二个参数: 1 表示水平翻转; 0 表示垂直翻转; 小于0 表示水平垂直翻转 frame = cv2.flip(frame,1) cv2.imshow('mycreame',frame) #显示当前帧 if ( cv2.waitKey(30) == 27 ): #按下Esc键则退出 waitKey()方法表示等待键盘输入,单位为毫秒 break #5.关闭所有窗口 cv2.destroyAllWindows()
2.此时在设备管理器中看到自己的电脑摄像头
3.当我插入usb摄像头后,在设备管理器中看到自己的电脑上的摄像头设备
4.这时想用 cap = cv2.VideoCapture(1)来打开usb摄像头,但是却不行,打开的还是电脑摄像头,因为这个时候在设备管理器中usb摄像头排在电脑摄像头前面,所以应该使用cap = cv2.VideoCapture(0)(我是这样理解的),以前也这样试过,但是usb摄像头打开稍微要比电脑摄像头慢一会,以前还没等usb摄像头打开就认为它打不开了,就把程序停止了,哎,太急躁了,太蠢了,哈哈哈,顺带说下这个时候 通过cap = cv2.VideoCapture(1)打开电脑摄像头。
-
python+opencv打开USB摄像头存储MP4文件
2022-02-22 16:33:36USB摄像头存储MP4文件USB摄像头存储MP4文件
import cv2 import os import time "打开摄像头,设置分辨率" my_camera = cv2.VideoCapture(0) my_camera.set(cv2.CAP_PROP_FRAME_WIDTH, 640) my_camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 320) "设置视频格式" write_ok = False frame_size = (int(my_camera.get(cv2.CAP_PROP_FRAME_WIDTH)), int(my_camera.get(cv2.CAP_PROP_FRAME_HEIGHT))) frame_fps = 30 video_format = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') "设置录制的视频文件名" video_file_fp = cv2.VideoWriter() video_file_fp.open('camera_video.mp4', video_format, frame_fps, frame_size, True) start_time = time.time() video_time_length = 100 print('Start to record video') "循环录制视频文件,并给视频加上时间戳" while(True): sucess, video_frame=my_camera.read() time_str=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) cv2.putText(video_frame,time_str, (5,340), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2) video_file_fp.write(video_frame) cv2.imshow('frame', video_frame) cur_time = time.time() #录制10秒后自动结束或者按ESC键退出 if cur_time-start_time>video_time_length: print('End the video with '+str(video_time_length)+' s') break if cv2.waitKey(1) &0xff == 27: #esc key break "关闭录制" video_file_fp.release() my_camera.release() cv2.destroyAllWindows() "显示录制的视频文件大小" mp4_file_size=os.path.getsize('camera_video.mp4') print(int(mp4_file_size/1024), 'KBytes')
-
Python开发多路显示USB摄像头
2021-09-19 15:05:01Python开发多路显示USB摄像头 一、项目准备 1.环境准备:Python3.6+pycharm2018专业版+PyQt5 5.6.0 2.硬件:两到三个USB摄像头 二、设计界面布局和按钮功能 1.利用pycharm打开QT Designer设计工具的界面布局。 2.... -
Python+Opencv调用USB接口摄像头
2021-08-27 14:06:26代码实现功能:调用USB接口的摄像头;读取其中一帧内容并保存本地。 程序如下: import cv2def read_show(): cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.... -
python opencv设置摄像头分辨率以及各个参数的方法
2020-12-24 12:56:46设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。使用 ... -
树莓派python3+opencv调用usb摄像头显示并保存
2020-07-15 22:37:16树莓派python3+opencv调用usb摄像头显示并保存直接上代码运行指令运行结果 直接上代码 camera.py import cv2 import numpy as np name = 0 cap = cv2.VideoCapture(0) cap.set(3,640) cap.set(4,480) ret, frame... -
使用opencv-python打开USB或者笔记本前置摄像头
2020-01-04 10:30:23使用opencv-python打开USB或者笔记本前置摄像头代码:效果: 代码: 其中video_index是摄像头编号,一般前置摄像头为0,USB摄像头为1或2. import cv2 def catch_video(name='my_video', video_index=0): # cv2.... -
树莓派4B+opencv4+python 打开摄像头的实现方法
2020-12-26 12:08:05在树莓派自带得python IDE Thonny中写如下代码,并在树莓派上插上usb摄像头 import cv2 cap=cv2.VideoCapture(0) #调用摄像头‘0'一般是打开电脑自带摄像头,‘1'是打开外部摄像头(只有一个摄像头的情况) width=... -
Python-OpenCV学习 -- 台式机外接USB摄像头的视频读取
2021-04-15 09:10:15例如:读取内置摄像头的Python- OpenCV代码 import cv2 #引入库 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow("Video", frame) #读取内容 if cv2.waitKey(10) == ord("q"): ... -
python3 使用 Opencv 打开 USB摄像头,配置1080P分辨率
2018-09-04 14:16:25import cv2 import time cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M', 'J', 'P', .... -
树莓派3B+ python 实时监控(USB摄像头)并显示
2020-11-24 12:28:19欢迎来访交流 ~~首先 看效果先是安装 一个小工具 叫 fswebcamsudo apt-get install fswebcam安装好了就可以拍照 实时监控了拍照 使用 (树莓派上)fswebcam 10 test.jpg执行后会 延时10帧 拍摄 (给个准备时间)产生... -
RK3399pro v4l2调用USB摄像头
2020-11-13 13:02:51因为RK3399pro+fadora系统的/dev/video0口被占用,使用python3+opencv无法读取摄像头数据,所以使用过 v4l2调用USB摄像头 -
c++和python 调用usb摄像头或本机摄像头,并保存视频
2021-09-19 17:49:04C++部分`#include<opencv2/opencv.hpp> #include<stdlib.h> using namespace cv;... //打开摄像头 if (!cap.isOpened())//如果视频不能正常打开则返回 return; cvWaitKey(30); int fp -
python 获取本地USB摄像头列表
2022-04-26 00:19:12python 获取本地USB介绍WMIAForge开启虚拟摄像头OBSpyvirtualcam其他 介绍 最近想写IM聊天室,需要了解一些基础,顺便打算把以前挖的坑给填了。 在去年有水一篇:《Python Opencv暴力获取所有相机》 这份代码是我... -
树莓派用python中的OpenCV输出USB摄像头画面
2021-05-16 08:30:02本文实例为大家分享了python OpenCV来表示USB摄像头画面的具体代码,供大家参考,具体内容如下确认Python版本$ pythonPython 2.7.13 (default, Jan 19 2019, 14:48:08)[GCC 6.3.0 20170124] on Linux2Type "help", ... -
如何使用Python操作摄像头
2020-12-09 20:02:20用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。... -
Python+Opencv读取高帧率USB摄像头问题
2019-11-19 08:47:26前几次使用Python+Opencv,对网络摄像头,USB摄像头进行数据采集,基本流程已经炮筒,没什么大问题。最近项目中使用了一款120fps/s的USB摄像头,但是调试好代码运行后,问题来了。 遇到的问题 120fps,每次只能读取... -
Opencv打开电脑自带USB摄像头,并调用模板匹配
2017-12-21 09:47:06Opencv打开电脑自带USB摄像头,并调用模板匹配 -
python3调用USB高帧率摄像头
2019-04-18 11:16:591.v4l2调用高帧率摄像头 python2.x版本的v4l2capture很简单,源码在这里 执行:./setup.py build 执行:sudo ./setup.py install python3.x版本的v4l2capture,需要将.c里面的#include <Python.h>改成当前... -
python opencv 读取USB摄像头的像素问题
2021-04-18 18:17:55每次调用capture读取video的时候,还回的像素都是640x480,不管是笔记本的摄像头还是USB摄像头,明明我的摄像头是支持130万读取的功能的呀。 问题分析 一番查找,关于用opencv 设置摄像头读分辨率问题的若干说明,... -
ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。
2022-01-20 14:50:22项目中使用opencv调用usb摄像头,运行过程中,会出现摄像头掉线的情况。猜测掉线原因是硬件相关,可能是摄像头,也可能是usb线和端口。 这里主要介绍两种掉线情况以及代码重连摄像头的方式。 1.第一种情况,设备... -
opencv python 打开双目摄像头
2018-12-24 22:57:59双目摄像头通过一根usb与电脑连接,如果直接这样会报错。但是调用摄像头0和1(电脑摄像头和双目左)或0和2(电脑摄像头和双目右)都是可以的。 cap1 = cv2.VideoCapture(1 + cv2.CAP_DSHOW) cap2 = cv2.... -
python 双目摄像头拍照
2020-04-12 17:42:48一个非常简单的拍照程序可以通过按键来是先拍照和保存照片,没有什么可以讲解的,相信大加很容易看明白。希望能给大家带来一定的帮助。谢谢