树莓派安装opencv打开摄像头实现实时传输

OpenCV简介:opencv是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法。(扩展阅读)
其实安装与使用OpenCV库非常简单,平常做图像处理算法处理的时候大家经常习惯用MATLAB,虽然MATLAB具有强大的工具箱,但是无法达到实时的效果,这一点小编一点也不喜欢,在这篇文章中,我将使用Banana Pi M2U与树莓派来演示安装OpenCV库与运行使用OpenCV库编写的程序。小编的这两块板子均移植的是Linux操作系统。(什么?没学过linux? … 哎,那也不用慌张,这里只用到了一些基本的Linux指令,大家在有看不懂指令的时候可百度一下)。首先我们来看下环境配置,(等一下,小编,我也没学过ARM,没有硬件基础)其实在这里大家完全不用操心,我们根本没用到硬件知识,此时的香蕉派与树莓派只是相当于一个小电脑。
(1)树莓派或者香蕉派(已经移植完linux操作系统,关于如何在电脑上linux系统移植及配置opencv ,小编会在后续的帖子中提到)
(2)USB摄像头一个
准备好硬件资源以后,我们即刻开始(注意,我这里是移植的是2.4.9版本,不同版本略有区别)
下载与安装:
在安装OpenCV库之前,我们需要更新一下软件源:

1、   sudo apt-get update  

然后开始安装OpenCV库:

    2、sudo apt-get install libcv-dev

做到这一步的时候我们可以暂时去喝口水,耐心的等待一会儿,等到安装完成。我们就可以开始来写第一个程序了。
其实使用OpenCV库,会使代码更容易阅读,更加整洁,根本不再需要重复造轮子!小编个人极其喜欢偷懒,经过简化之后,大概十余行即可打开摄像头。小编有个群193369905,里面分享的均是机器视觉的资料。

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0);           //打开摄像头
// 如果要打开本地视频采用  VideoCapture cap("***.avi");
if(!cap.isOpened())  return -1;     //检测一下摄像头是否打开
Mat frame;  
while(1){
cap>>frame;        //读取当前帧
// 此处可添加图像处理算法,对图像进行处理,当然了,我们可以不做任何操作,只打开一下摄像头
imshow("Xiaorun OpenCV CAM", frame);    //显示一下
if(waitKey(20) >=0) break;       // 等待按键,跳出循环
}
return 0;
}

就这样我们就编写完了一个打开摄像头的程序,将以上代码保存为xiaorun.cpp,并在shell敲一下它g++ -o xiaorun ./xiaorun.cpp -lopencv_core -lopencv_highgui
编译完之后不出意外的话应该没有错误,我们会在当前目录下看到一个可执行文件,xiaorun,我们运行一下 ./ xiaorun
dang dang dang 这时候屏幕就可以看到摄像头里的图像了,小编颜值不高,在这里就不挂出自拍了。
上面的例子已经成功将摄像头的图像显示在屏幕上,不过这还不够炫酷~,完全不能让小编玩high.接下来我想在上述的空白处添加三行代码,以实现可实现实时的边缘检测

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0);//打开摄像头
if(!cap.isOpened())return -1;
Mat frame,edges;
while(1){
cap>>frame;//读取当前帧


cvtColor(frame,edges,CV_BGR2GRAY);//把图像转换为灰度图像
blur(edges,edges,Size(7,7));//模糊降噪
Canny(edges,edges,3,9,3);//Canny 边缘检测


imshow("Xiaorun OpenCV Canny", edges);
if(waitKey(20) >=0) break;
}
return 0;
}      

同样 ,我们保存为xiaoruncanny.cpp ,编译一下 g++ -o xiaorun ./xiaorun.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
当然木有错误了,只是稍稍加一个头文件和三行代码,OK,运行一下吧 ./ xiaorun
机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。OpenCV的更多例子大家可以在网上找到OpenCV可以应用在各种场合,例如跟踪小车,人脸识别等,小编在此仅抛砖引玉,此处只有一个基本框架,大家可以参考,自行编写算法,玩的更High感兴趣的可加群193369905,小编承接各种AI小项目开发 利用这个做的水下机器人
原创不易,欢迎赞赏
在这里插入图片描述

### 树莓派上使用 OpenCV 实现实时视频输的方法 在树莓派上使用 OpenCV 实现实时视频输,需要完成以下几个关键步骤:环境配置、安装 OpenCV 庢库以及编写 Python 脚本来访问摄像头并进行实时传输。以下是详细说明: #### 1. 环境准备 确保树莓派已经安装了 Linux 操作系统,并连接了一个 USB 摄像头或 Pi Camera。如果使用 Pi Camera,需先启用它: ```bash sudo raspi-config ``` 选择 `Interfacing Options` -> `Camera` -> `Enable`[^1]。 #### 2. 更新软件源 在安装 OpenCV 之前,更新树莓派的软件源以确保所有依赖项是最新的: ```bash sudo apt-get update sudo apt-get upgrade ``` 此操作可以避免因依赖版本不匹配导致的问题。 #### 3. 安装依赖项 OpenCV安装需要一些必要的依赖项,运行以下命令来安装: ```bash sudo apt-get install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libdc1394-22-dev ``` 这些依赖项为 OpenCV 提供了图像处理和硬件加速的支持[^2]。 #### 4. 下载 OpenCV 源代码 从 OpenCV 的官方 GitHub 仓库下载最新版本的源代码: ```bash wget -O opencv.zip https://github.com/opencv/opencv/archive/4.7.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.7.0.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.7.0 opencv mv opencv_contrib-4.7.0 opencv_contrib ``` 此步骤获取了 OpenCV 的核心库和附加模块[^2]。 #### 5. 编译与安装 OpenCV 进入 OpenCV 源代码目录并创建一个构建文件夹: ```bash cd opencv mkdir build cd build ``` 运行 CMake 配置工具: ```bash cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON .. ``` 然后开始编译和安装: ```bash make -j4 sudo make install sudo ldconfig ``` 这将安装 OpenCV 库到树莓派的系统中[^2]。 #### 6. 编写 Python 脚本实现实时视频输 使用 Python 和 OpenCV 访问摄像头实现实时视频输。以下是一个简单的示例脚本: ```python import cv2 # 初始化摄像头 cap = cv2.VideoCapture(0) # 使用默认摄像头 if not cap.isOpened(): print("无法打开摄像头") exit() while True: ret, frame = cap.read() # 读取一帧图像 if not ret: print("无法捕获帧") break # 显示图像 cv2.imshow('Video Stream', frame) # 按下 'q' 键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放资源 cap.release() cv2.destroyAllWindows() ``` 此脚本通过 `cv2.VideoCapture` 访问摄像头,并通过 `cv2.imshow` 显示实时视频流[^3]。 #### 7. 测试与优化 运行上述脚本以测试摄像头是否正常工作。如果需要将视频流输到远程设备,可以结合网络协议(如 RTSP 或 HTTP)进行进一步开发。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao__run

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值