百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

树莓派监控摄像头python+picamera或openCV

off999 2024-11-25 15:52 36 浏览 0 评论

1、在raspi-config中使能摄像头


打开树莓派终端,输入sudo raspi-config

完成后重启树莓派

2、检查摄像头运行情况

vcgencmd get_camera

raspistill命令行测试拍照

raspistill -v -o test.jpg

执行后如下图操作:


3、上面都是设置开启摄像头及测试,我们接下来要使用python调用摄像头,完成拍照和直播流的功能。


树莓派4B安装opencv:

sudo apt-get install -y libopencv-dev python3-opencv

网络不好的,下载会中断,多执行以上命令几次就好了,段点续传。

安装完成后

输入命令:

python3

import cv2

看到以下无错误显示即可

4、使用opencv调用树莓派拍照

(1)、 打开usb摄像头读取一张照片

import cv2

import matplotlib.pyplot as plt

#opencv调用csi摄像头优先0,然后usb按顺序排列下去

capture = cv2.VideoCapture(0)

# 获取一帧

ret, frame = capture.read()

plt.imshow(frame[:,:,::-1])#BGRtoRGB

plt.show()

# 释放资源

capture.release()


5、Csi排线的可以直接用树莓派官方系统自带的picamera库

(1)、捕捉一个图像输出至文件

使用capture方法可以轻松将捕捉到的图像输出至指定文件。 下面这个实例是捕捉一个分辨率为1024*768的图像,并将之输出到foo.jpg中


import time

import picamera

with picamera.PiCamera() as camera:

camera.resolution = (1024, 768)

camera.start_preview()

#摄像头预热2秒

time.sleep(2)

#camera.capture('foo.jpg', resize=(320, 240))#可改变分辨率

camera.capture('foo.jpg')

(2)、如果你不想使用有损JPEG编码,并希望加快这一解码过程的话,可以使用picamera自带的picamera.array模块。可以使用PiRGBArray类简单的捕获'brg'格式的数据。(假定RGB与BGR是分辨率相同的数据,只是具有相反的颜色)

import time

import picamera

import picamera.array

import cv2


with picamera.PiCamera() as camera:

camera.start_preview()

time.sleep(2)

with picamera.array.PiRGBArray(camera) as stream:

camera.capture(stream, format='rgb')#format类型:bgr\rgb\h264

# 此时就可以获取到bgr的数据流了

image = stream.array

import matplotlib.pyplot as plt


image_resize = cv2.resize(image,(320, 240)) #opencv改变分辨率

plt.imshow(image_resize)


6、使用python做一个简单的远程监控摄像头

使用opencv 和python自带的http库就能完成(为什么不用picamera?因为通用呀,不一定树莓派,只要装了opencv的硬件,这代码就可以运行),使用浏览器,输入树莓派地址:8080直接显示,上代码:

import cv2

from http import server

import time

#做一个响应主页面html

PAGE="""\

<html>

<head>

<title>Video Streaming Demonstration</title>

</head>

<body>

<h1>Video Streaming Demonstration</h1>

<img src="/video_feed">

</body>

</html>


"""


# 通过opencv获取实时视频流

video = cv2.VideoCapture(0)

def get_frame(v):

success, image = v.read()

# 因为opencv读取的图片并非jpeg格式,因此要用motion JPEG模式需要先将图片转码成jpg格式图片

ret, jpeg = cv2.imencode('.jpg', image)

return jpeg.tobytes()

def gen(camera):

while True:

frame = get_frame(camera)

# 使用generator函数输出视频流, 每次请求输出的content类型是image/jpeg

yield (b'--frame\r\n'

b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')


class HTTPHandler(server.BaseHTTPRequestHandler):

def do_GET(self):#get数据处理

if self.path == '/': #跳转至默认页面

self.send_response(301)

self.send_header('Location', '/index.html')

self.end_headers()

elif self.path == '/index.html':

content = PAGE.encode('utf-8')

self.send_response(200)

self.send_header('Content-Type', 'text/html')

self.send_header('Content-Length', len(content))

self.end_headers()

self.wfile.write(content)

elif self.path == '/video_feed':

self.send_response(200)

self.send_header('Content-Type','multipart/x-mixed-replace; boundary=frame')

self.end_headers()

while True:

self.wfile.write(next(cam)) #必须用next()才能运行生成器

self.wfile.write(b'\r\n')

else:

self.send_error(404)

self.end_headers()

cam = gen(video)#生成器

try:

print("http server start...")

address = ('', 8080)

server = server.HTTPServer(address, HTTPHandler)

server.serve_forever()

finally:

print('done')

相关推荐

win10一定要创建账户吗(win10需要创建microsoft账户吗)

win10系统安装不需要申请微软账号。如果是在安装win10的过程中,则使用本地账户登录,从安装主要步骤完成之后进入后续设置阶段开始,步骤如下:1、首先就是要输入产品密钥,或者点击左下角“以后再说”。...

win10显示已禁用输入法(w10系统已禁用输入法)

在使用win10的过程中,有时候利用第三方软件过度优化开机启动项目就容易导致win10无法打开输入法问题,这个情况是由于ctfmon程序无法正常启动所致,一般表现在电脑桌面右下角显示已禁用ime的提示...

windows pad(windowspad官方网站入口)

平板电脑安装windows方法如下1、首先,下载并安装U启动PE制作工具,这里要特别注意的是,要下载装机版的。2、点开PE制作工具的主界面,插入U盘,等待U盘被制作工具识别出来后。3、点击归还空间,然...

为什么电脑一开机就死机(为什么电脑一开机就死机重启)

一、软件问题:  1、导致死机的一个重要原因就是病毒程序的入侵。大家都知道,病毒程序是一种会破坏计算机软件系统,并占用极大的系统资源的一种恶意攻击程序,它会给计算机本身的软件造成很大的伤害。死机时的首...

0x0000007a蓝屏解救方法win7

0x0000007A说明是内存或虚拟内存(硬盘)的问题,你可以按顺序尝试如下操作:1、更改虚拟内存页面文件位置:我的电脑→右键→属性→高级→性能设置→高级→虚拟内存更改→取消原来选择的驱动器(默认在C...

系统小说排行榜完本经典之作

超级兑换系统超级修仙超级客栈系统貌似高手在异界重生之修仙系统超级修仙系统异界之兑换成圣(贱圣VS奸神)+超级兑换(火山飞狐)+穿越之无敌兑换(开心小帅)+兑换器修仙(轻舞流芒)+...

手机能修复u盘吗(手机修复u盘工具下载)

1.在手机上可以恢复u盘,当手机SD卡或U盘插入电脑中时,如果提示“文件或目录损坏且无法读取”的信息时,我们首先需要对手机SD卡或U盘进行目录修复操作。插入待修复的U盘,打开“我的电脑”,找到Sd卡...

怎么查电脑显卡的信息(电脑怎么查看显卡信息)

要查看电脑的显卡信息,可以按照以下步骤进行操作:1.使用快捷键Win+R打开“运行”对话框。2.在运行对话框中输入“dxdiag”并点击“确定”按钮,打开“DirectX诊断工具”。3....

电脑上找不到输入法怎么办(电脑中找不到输入法)

如果电脑上不显示输入法,您可以尝试以下解决方法:1.检查输入法设置:首先,您可以检查电脑的输入法设置。在Windows系统中,您可以点击任务栏右下角的输入法图标(一般为字母或语言标志),然后选择“显...

win10系统本地连接在哪里(window10的本地连接在哪)

要找到本地连接,可以按照以下步骤在Windows10系统中进行:1.点击“开始”菜单,然后选择“设置”(齿轮图标)。2.在设置窗口中选择“网络和Internet”选项。3.在“网络和Inter...

win10有32位版本吗(win10还有32位的吗)

64位版本好。32位的操作系统处理数据的能力较慢,支持的内存小,并且只支持基于32位的软件,不能运行64位的软件。64位的操作系统处理数据的能力较快,支持的内存较大,能运行32位的软件,也能运行6...

pdf打印机下载(pdf打印机安装程序下载)
  • pdf打印机下载(pdf打印机安装程序下载)
  • pdf打印机下载(pdf打印机安装程序下载)
  • pdf打印机下载(pdf打印机安装程序下载)
  • pdf打印机下载(pdf打印机安装程序下载)
账号密码大全真的(各种账号密码)

英雄号,是4399官方版本的账号:1973024549密码:123456这是自己的,不想玩了,送给看到的有缘人吧^o^1、默认的机顶盒密码6321,也可以进行更改,方法:首先,通过搜索“中国电信”...

windows server2019(windowsserver2019密钥激活码)

WindowsServer2019那是给服务器用的系统。服务器的作用是计算数据,而不是图像处理。所以WindowsServer2019里面精简了大量有关图形的功能。办公和打游戏是需要图像处理的...

一键还原系统怎么卸载(一键还原系统软件怎么用)

打开控制面板,点击“系统”,再点击“高级系统设置”,再点“高级”标签,再点“启动和故障恢复”里的“设置”,,出来新对话框,把“默认操作系统“选到”WIN10,然后下面的”显示操作系统列表的时间“选到0...

取消回复欢迎 发表评论: