树莓派4b配置摄像头

USB摄像头

启用树莓派摄像头

sudo raspi-config 打开设置
选中camera 选择开启
sudo reboot 重启

安装库
sudo apt-get update
sudo apt-get install subversion
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev
sudo apt-get install cmake
sudo apt-get git
用git下载开源MJPG STREAMER
选择一个文件夹
sudo https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental   // 进入mjpg-streamer-experimental目录 
可以输入 pwd 记下这个目录的位置后面配置CSI摄像头会用到
sudo make all
sudo make install
开启摄像头

./mjpg_streamer -i “./input_uvc.so -f 30 -r 800x600” -o “./output_http.so -w ./wwww”

CSI摄像头

查看摄像头

ls -l /dev/video0

解决CSI摄像头报错

sudo wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc
sudo apt-key add ./lrkey.asc

修改

sudo nano /etc/apt/sources.list
增加一行
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/wheezy main

继续安装
sudo apt-get install uv4l-raspicam
sudo reboot

重启之后安装
sudo pkill uv4l   // 杀死运行的 uv4l进程
sudo apt-get update
sudo apt-get install uv4l-uvc
sudo apt-get install uv4l-xscreen
sudo apt-get install uv4l-mjpegstream
sudo reboot

之后

sudo modprobe bcm2835-v4l2

切换至上面下载的MJPG STREAMER目录
进入mjpg-streamer/mjpg-streamer-experimental 目录执行以下代码

./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -n -y -f 25 -r 800x600" -o "./output_http.so -n -w /usr/local/www"

浏览器输入
http://raspberry-ip-address:8080/?action=stream

结合zoneminder实现智能监控

详细

zoneminder安装
sudo apt-get update
sudo apt-get install zoneminder
#导入数据库表
sudo cat /usr/share/zoneminder/db/zm_create.sql | sudo mysql --defaults-file=/etc/mysql/debian.cnf
#建立用户zmuser,设置密码zmpass,可更换为自己的
sudo echo 'grant lock tables,alter,create,select,insert,update,delete,index on zm.* to 'zmuser'@localhost identified by "zmpass";'    | sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql

zoneminder文档

### 树莓派4B外接摄像头教程及配置方法 #### 硬件准备 为了将摄像头成功连接至树莓派4B并完成基本配置,需准备好以下硬件设备: - 树莓派4B一台。 - 支持CSI接口的官方树莓派相机模块或USB摄像头。 - 微型SD卡(建议容量不低于16GB),已烧录Raspberry Pi操作系统镜像文件[^2]。 如果使用的是双目摄像头,则还需要额外准备Arduino单片机及相关配件来辅助控制和数据传输。 #### 软件安装与环境搭建 在开始之前,请确认已经完成了基础的操作系统设置工作。以下是具体步骤说明: ##### 安装必要库文件 对于基于OpenCV的应用场景来说,需要先通过命令行工具pip或者apt-get等方式下载所需依赖项。例如,在终端输入如下指令可以安装Python版本下的图像处理包以及QR码解析插件pyzbar: ```bash sudo apt update && sudo apt upgrade -y sudo apt install python3-opencv libzbar0 -y pip3 install opencv-python pyzbar numpy imutils ``` 以上操作会自动拉取最新稳定版的相关资源,并将其部署到当前用户的环境中去[^1]。 ##### 配置摄像头支持功能 编辑`/boot/config.txt`文档,在其中添加一行启用camera模块选项;如果是标准型号Pi Camera v2系列的话,默认情况下无需修改任何参数即可正常运作。而对于某些特殊类型的第三方产品而言,则可能涉及到更多复杂的调整过程,比如指定分辨率大小、帧率范围等属性值设定等问题都需要仔细查阅对应厂商给出的技术手册资料后再做决定: ```txt start_x=1 gpu_mem=128 dtoverlay=rpi-cam ``` 重启机器使更改生效之后再继续往下走下一步骤验证效果如何吧! #### 测试视频流播放情况 编写一段简单的脚本用来捕捉来自镜头的画面内容并向屏幕输出展示出来看看实际运行状况到底怎样样呢?下面给出了一个例子供参考学习之用: ```python import cv2 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) cv2.imshow('frame',gray) key=cv2.waitKey(1)&0xFF if key==ord('q'):break cap.release();cv2.destroyAllWindows(); ``` 当执行上述代码片段后应该能够看到窗口里边显示出连续变化着的真实世界景象了哦!如果没有出现问题的话就可以进一步尝试加入更高级别的逻辑运算单元啦~ #### 实现二维码扫描识别能力 利用先前提到过的PyZBar开源项目成果可以直接调用其API函数快速达成目标需求。这里提供了一个完整的示范程序供大家模仿练习看懂原理思路之后也可以自行扩展改造满足个性化定制要求哟~ ```python from imutils.video import VideoStream from pyzbar import pyzbar import argparse import datetime import imutils import time import cv2 ap = argparse.ArgumentParser() ap.add_argument("-o", "--output", type=str, default="barcodes.csv", help="path to output CSV file containing barcodes") args = vars(ap.parse_args()) print("[INFO] starting video stream...") vs = VideoStream(src=0).start() found=set([]) csv=open(args["output"],"w") time.sleep(2.0) while True : frame= vs.read() ... #省略部分中间计算环节 barcodes=pyzbar.decode(gray) for barcode in barcodes : (x,y,w,h)=barcode.rect cv2.rectangle(frame,(x,y),(x+w , y+h ),(0,0,255),2 ) barcodeData=barcode.data.decode("utf-8") barcodeType=barcode.type text=f"{barcodeData} ({barcodeType})" cv2.putText(frame,text,(x,y-10), fontFace=cv2.FONT_HERSHEY_SIMPLEX, color=(0,0,255)) timestamp=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") csv.write(f"{timestamp},{barcodeData}\n") found.add(barcodeData) cv2.imshow("Barcode Scanner",frame) key=cv2.waitKey(1)&0xFF if key == ord('q') or len(found)==N : break print("[INFO] cleaning up...") csv.close() cv2.destroyAllWindows() vs.stop() ``` 该段落描述了一种典型的读取条形码的工作流程,其中包括初始化摄像装置、持续捕获每一帧画面直至发现有效编码为止最后保存记录结果退出循环结束整个进程等功能特性. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值