在树莓派4B上使用C++和OpenCV

这篇具有很好参考价值的文章主要介绍了在树莓派4B上使用C++和OpenCV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

树莓派上的C++

OpenCV的安装

Ⅰ下载opencv(命令窗口)

Ⅱ安装依赖包

Ⅲ配置安装路径并编译

Ⅳ配置OpenCV环境

程序运行验证

Ⅰ创建cpp文件

Ⅱ编写cpp文件

Ⅲ使用g++编译:

Ⅳ运行

参考资料与致谢


前言

本人最近在重温C++,由于之前使用树莓派+Python+OpenCV做了一些项目,所以想将Python换成C++实现一遍。写这篇文章的目的有两个,一是可以记录自己的学习过程,防止以后用到忘记而花费大量时间踩坑;二是可以帮助有同样想法的人避免踩坑。

树莓派上的C++

树莓派自带C++的编译g++,如没有,可以采用下面命令安装。

sudo apt-get install g++

OpenCV的安装

Ⅰ下载opencv(命令窗口)

git clone https://github.com/opencv/opencv.git

Ⅱ安装依赖包

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

Ⅲ配置安装路径并编译

①打开OpenCV安装的路径,我的是/home/pi/opencv.

 cd /home/pi/opencv

②编译,时间很长,耐心等待(OpenCV4默认不生成.pc文件,这里设置一下才行,免得后面再补)

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install

Ⅳ配置OpenCV环境

①在/etc/ld.so.conf.d/文件夹下新建一个opencv4.conf,里面写入/usr/local/lib.

cd /etc/ld.so.conf.d/
sudo touch opencv4.conf
sudo sh -c 'echo "/usr/local/lib" > opencv4.conf'

②更新pkg-config.

sudo ldconfig

③复制opencv.pc文件到/usr/lib/pkgconfig/下,可能是在/usr/local/lib/pkgconfig/opencv4.pc,也可能在/usr/local/lib64/pkgconfig/opencv4.pc文件下,记住一定要去查看。

sudo cp -f /usr/local/lib64/pkgconfig/opencv4.pc  /usr/lib/pkgconfig/
sudo cp -f /usr/local/lib/pkgconfig/opencv4.pc  /usr/lib/pkgconfig/

④添加环境变量

方法一:

sudo vim /etc/bash.bashrc

可能出现“sudo: vim:找不到命令”,安装即可。

sudo apt-get install vim

在文件末尾添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig
export PKG_CONFIG_PATH

方法二:

sudo gedit /etc/bash.bashrc

同样可能出现“sudo: gedit:找不到命令”,安装即可。

sudo apt-get install gedit

在文件末尾添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig
export PKG_CONFIG_PATH

这样就安装好了,测试:

pkg-config --modversion opencv4

出现4.6.0,安装成功!

程序运行验证

Ⅰ创建cpp文件

cd

回到最初路径或者关闭重新打开。

sudo gedit test.cpp

Ⅱ编写cpp文件

这是一个直接调用摄像头的程序,需要树莓派外接摄像头。

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
	VideoCapture cap(0);
	Mat img;
	while (true)
	{
		cap.read(img);
		imshow("Image", img);
		waitKey(1);
	}
    return 0;
}

如果没有摄像头,也没有图片,这里提供一个绘图的程序。

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
	Mat img(512, 512, CV_8UC3, Scalar(255, 255, 255));
	circle(img, Point(256, 256), 256, Scalar(0, 0, 255), FILLED);
	Rect roi(128, 128, 256, 256);
	rectangle(img, roi, Scalar(255, 255, 255), FILLED);
	line(img, Point(256, 128), Point(256, 256), Scalar(255, 255, 0), 3);
	putText(img, "I'am CV", Point(256, 128), FONT_HERSHEY_DUPLEX, 1, Scalar(0, 0, 0), 2);
	imshow("img", img);
	waitKey(0);
    return 0;
}

Ⅲ使用g++编译:

g++ test.cpp -o test `pkg-config --cflags --libs opencv4`

这里可能会报错,c++ 中——fatal error: opencv2/opencv.hpp: No such file or directory #include <opencv2/opencv.hpp>。

这是因为OpenCV头文件的路径中多了一个opencv4:/usr/local/include/opencv4/opencv2

可以将opencv2文件夹复制到/usr/include.

\cp -rf /usr/include/opencv4/* /usr/include

Ⅳ运行

sudo ./test

参考资料与致谢

本文主要参考了两篇文章,感谢两位大佬!

树莓派C++语言通过opencv调用csi摄像头显示图像_一坨小白菜的博客-CSDN博客

关于ArchLinux和manjaro在安装opencv时的过程与踩坑 - 知乎 (zhihu.com)

行文潦草,如有错误欢迎指出!文章来源地址https://www.toymoban.com/news/detail-450523.html

到了这里,关于在树莓派4B上使用C++和OpenCV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于树莓派4B的OpenCV安装与简单应用(真速通版)

    前言: 本文为手把手教学树莓派4B的OpenCV安装与简单应用( 真速通版本 ),树莓派4B最为目前最新款的树莓派家族一员深受创客和开发者喜爱。树莓派4B作为一款搭载 Cortex-A72 系列芯片的板载电脑,其不仅可以作为简单的 MCU 进行控制方面开发,更可以凭借其高计算性能进行

    2024年02月16日
    浏览(61)
  • 树莓派4B Python3.7.3 Opencv+Mediapipe 手指方向识别

    起因: 2023年4月接触树莓派之后,想实现手指方向的实时识别,现有Google的框架Mediapipe可以实现21个手指关键点位置实时识别,去尝试装Mediapipe以及相关依赖库,发现树莓派的源(官方源),一些库比较旧(15年的都有),所以整体思想要装15年 16年的版本,才能适配 系统环境

    2024年02月03日
    浏览(37)
  • 树莓派4B系统一键安装opencv,再也不要用编译安装啦!(支持buster、bullseye)

    首先第一步,需要配置好国内镜像软件源(原生源通不过),已经换源的可以跳过 。这里选择清华源为例。 点击链接看到使用帮助:https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/,选择对应的系统版本,这里使用Buster为例 输入命令修改文件 /etc/apt/sources.list 和 /etc/apt/sources.list.d/

    2024年02月12日
    浏览(28)
  • 动态识别二维码(树莓派4b + python3 + pyzbar + opencv + 摄像头)

            最近需要做一个 工训物料小车 扫码领取任务的功能,于是使用 树莓派 的摄像头扫码二维码。经过我的多番寻找,发现有个叫pyzbar的库,可以结合opencv,可以做一个 视频动态二维码扫描 。         本文实现的功能: 实现树莓派的二维码扫描         opencv的

    2024年02月14日
    浏览(30)
  • 树莓派4b安装opencv4.6.0并开启ffmpeg视频加速(2022.10.27)

    按ctrl + o ,enter保存,ctrl + x 关闭; 将以下内容写入配置文件(为pip配置阿里和豆瓣源):(保存并退出同上)

    2023年04月16日
    浏览(35)
  • 如何在树莓派上使用Nginx搭建本地站点并通过内网穿透实现远程访问

    安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行。同时结合cpolar内网穿透工具即可实现无公网IP远程访问。 在树莓派安装

    2024年02月11日
    浏览(34)
  • 树莓派4B安装XRDP使用远程桌面

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 之前写了很多关于Ubuntu使用RDP或VNC的文章,最近在鼓捣树莓派4B,VNC我暂时没鼓捣成功,黑屏还未找到原因,XRDP可以使用,然后Windows远程桌面应用可以直接访问。 我的配置: OS:树莓派系统 64bits 这里

    2024年01月25日
    浏览(34)
  • 树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务

    前提:本文基于Ubuntu,Java8,SpringBoot 2.6.13讲解 准备SpringBoot/SpringCloud项目jar包 用 maven 打包springBoot/springCloud项目,先在本地跑一跑,是否可以正常运行,特别注意哈!如果项目访问数据库,redis等运行在docker容器的服务,那么你的IP不能配置成树莓派IP,必须是docker network 内分

    2024年02月22日
    浏览(33)
  • 树莓派4B(Raspberry Pi 4B)使用docker搭建阿里巴巴sentinel服务

    由于国内访问不了docker hub,而国内镜像仓库又没有适配树莓派ARM架构的sentinel镜像,所以我们只能退而求其次——自己动手构建镜像。本文基于Ubuntu,Java8,sentinel-dashboard-1.8.7讲解 下载sentinel-dashboard-1.8.7.jar 到GitHub(Releases · alibaba/Sentinel (github.com))下载 下载jdk-8u391-linux-aar

    2024年02月20日
    浏览(35)
  • 树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点

    最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于

    2024年02月05日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包