【树莓派】USB摄像头+python+opencv

一、接入USB摄像头

插入usb摄像头,在命令行模式下输入        lsusb        

如果看到列举出来的信息有camera的话就说明识别成功,可以使用。

二、测试摄像头

1、拍照测试

安装fswebcam

sudo apt-get install fswebcam

输入以下命令,开启摄像头

fswebcam --no-banner -r 640x480 image3.jpg

2、录像测试

安装luvcview

sudo apt-get install luvcview

输入以下命令,开启摄像头

luvcview -s 640x480

三、安装python2

sudo apt-get install python

如果发现安装的是python3的话就需要把python改为python2

四、安装OpenCV

分别运行以下两条命令即可~

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

在命令行模式下输入命令,测试是否安装成功(如果提示不存在python这个命令,说明可能同时存在python2和3的环境,需要特指python2)

python
import cv2
cv2.__version__

若正常出现下图所示的版本号,则表示安装成功!

在这里插入图片描述

最后退出python环境,可以输入exit(),或者直接快捷键ctrl+D

五、拍照存储功能代码

其中的图像预处理部分根据需要改。

import cv2
import numpy as np
name = 0
cap = cv2.VideoCapture(0)
 
cap.set(3,640)
cap.set(4,480)
 
ret, frame = cap.read()
rows, cols, channels = frame.shape
print(cols, rows, channels)
 
# 图像预处理
def img_p(img):
 
    # 灰度化
    gray_img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 
    # 平滑滤波
    blur = cv2.blur(gray_img, (3,3))
 
    # 二值化
    ret1, th1 = cv2.threshold(blur, 190, 255, cv2.THRESH_BINARY)
 
    # 透视变换
    b = 50
    pts1 = np.float32([[b, 0], [cols-b, 0], [0, rows], [cols, rows]])
    pts2 = np.float32([[0, 0], [cols, 0], [0, rows], [cols, rows]])
    M = cv2.getPerspectiveTransform(pts1, pts2)
    dst = cv2.warpPerspective(blur, M, (cols, rows))
 
    return dst
 
 
while(1):
        ret,frame = cap.read()
        dst = img_p(frame)
        cv2.imshow('usb camera', dst)
 
        k = cv2.waitKey(1)
        if (k == ord('q')):
            break
        elif(k == ord('s')):
                #name = input('name:')
                name += 1
                #filename = r'./camera/' + str(name) + '.jpg'
                filename = str(name) + '.jpg'
                cv2.imwrite(filename, dst)
                print(filename)
                #break 
cap.release()
cv2.destroyAllWindows()

然后终端执行python 文件名.py,即可看到出来画面了

(如果提示不存在python这个命令,说明可能同时存在python2和3的环境,需要特指python2)

在这里插入图片描述

 

注:在终端执行python 文件名.py后若出现以下错误
在这里插入图片描述
或者是关于connection timeout 的错误,换一下摄像头usb的口,树莓派那四个口都试过来,会有可以用的。

让USB CAMERA界面在前端,按s保存图片,q退出程序。

OK了。

 

六、报错:python Non-ASCII character '\xe5' in file

在脚本最开头加上

 # coding=UTF-8
就搞定了。
### 如何在树莓派上使用USB摄像头进行视频流传输 #### 安装必要的软件包和支持库 确保已更新Raspberry Pi的固件和配置工具,并启用摄像头支持。这可以通过运行`apt-get update; apt-get upgrade`来完成,随后在`raspi-config`中激活摄像头驱动并重启设备[^2]。 #### 配置摄像头模块 对于USB摄像头,在大多数情况下,默认内核模块能够自动识别并加载相应的驱动程序。如果遇到兼容性问题,可能需要手动安装特定于硬件的支持包或调整UVC(USB Video Class)设置。 #### 启动视频流服务 要实现实时视频流广播,可利用内置命令行工具如`libcamera-vid`配合TCP/IP协议栈发送H.264编码后的帧序列至指定端口: ```bash libcamera-vid -t 0 --inline --listen -o tcp://0.0.0.0:8888 ``` 上述指令将持续无限期(`-t 0`)监听来自任何地址连接请求并将输出导向本地服务器开放的8888号端口[^1]。 另一种方法是借助Netcat (`nc`) 实现更简单的UDP/TCP套接字转发机制,适用于低延迟场景下的单向数据流传送: ```bash ffmpeg -f v4l2 -i /dev/video0 -c:v mpeg4 -f matroska "tcp://localhost:1234?listen" ``` 这里采用了FFmpeg处理V4L2接口获取原始像素信息并通过Matroska封装格式打包后经由TCP通道向外分发。 #### 测试与验证 客户端接收方需具备相应解码能力才能正常观看直播画面。例如,可通过浏览器访问带有WebRTC功能的服务页面;或者采用VLC Media Player打开网络链接形式查看远程摄像源的内容。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值