OpenCV4.5.x在树莓派4B的安装和验证

 首先声明,我是在树莓派4B全新安装的,之前没有安装过旧的opencv。使用的树莓派镜像是 
   2021-10-30-raspios-bullseye-armhf.img 这个镜像,刚安装好CMake。安装cmake的步骤简单说下:
 下载了cmake源码包后,就是在终端运行以下几个命令:
mv /home/pi/Downloads/cmake-3.22.0.tar.gz /home/pi/cppProjects/cmake_src/
sudo apt install openssl libssl-dev
tar -zxvf cmake-3.22.0.tar.gz 
cd cmake-3.22-0
./bootstrap
make
sudo make install

 在树莓派安装OpenCV有些复杂,网上也有很多种安装OpenCV的方法,比较混乱。经过我的搜索和梳理,找到了一种比较简单的安装方法,网址为:

https://qengineering.eu/install-opencv-4.5-on-raspberry-pi-4.html
大家最好先看看上面这个网页。我也是完全按照它的建议,从github下载他提供的安装脚本安装的。直接按照上面网页的步骤做即可。首先要更改GPU Memory, 然后要更新树莓派的EEPROM。接着作者说了不要在python的PIP中安装opencv等,确实都是好建议。
然后我们要运行unname -a确认下当前是64位系统还是32位系统。经过我的验证,我下载的2021-10-30-raspios-bullseye-armhf.img 这个镜像是32位系统。因此可以直接运行作者提供的shell脚本程序。接下来关键的一步是要设置Swap memory,因为opencv很吃内存,编译过程要占用很大内存,必须要多提供些硬盘空间用于临时内存。按照作者的要求修改 /sbin/dphys-swapfile文件。下面最后一行有2048那个就是文件要修改的地方。

restrict size (computed and absolute!) to maximally this limit

can be set to empty for no limit, but beware of filled partitions!

this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it

but is also sensible on 64bit to prevent filling /var or even / partition

CONF_MAXSWAP=2048 --------> 2048改成4096。
然后重启系统。
接着去作者的github网站下载他的shell脚本文件:
https://github.com/Qengineering/Install-OpenCV-Raspberry-Pi-32-bits
下载了该资料库后。

在这里插入图片描述
下载后如上图。随便挑一个比如将OpenCV-4-5-0.sh文件用WinSCP拷贝到树莓派中,在终端直接运行下面两句即可:

$ sudo chmod 755 ./OpenCV-4-5-0.sh
$ ./OpenCV-4-5-0.sh

一个shell脚本,完成了60多个指令,这就是shell脚本程序的好处。安装CMake的过程也可以使用类似的shell脚本来实现,省去了打字的麻烦!注意,为了加快速度,我没有使能QT功能,大家有需要自己修改OpenCV-4-5-x.sh脚本即可。
整个opencv安装过程大约一个半小时。安装完成后的截图如下,你会看到
Congratulations!
You’ve successfully installed OpenCV 4.5.0 on your Raspberry Pi 32-bit OS
这两句话,代表安装完毕了!
在这里插入图片描述
最后修改 /sbin/dphys-swapfile文件。将CONF_MAXSWAP=4096改回成2048。

restrict size (computed and absolute!) to maximally this limit

can be set to empty for no limit, but beware of filled partitions!

this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it

but is also sensible on 64bit to prevent filling /var or even / partition

CONF_MAXSWAP=4096 --------> 4096改成2048
找到了这篇文章,的确大大降低了安装难度。大家可以看看这位CSDN朋友的安装过程:
https://blog.csdn.net/qq_42642142/article/details/112474678
复杂得多,实际上就是将脚本程序一步一步地执行。不过经过这么折腾和总结,我相信他的软件水平也会提高不少呢!

二、验证OpenCV的安装
1、使用Python验证
如下:
import cv2
print(cv2.version)
截图如下:
在这里插入图片描述
从上图可知我刚安装的opencv版本是4.5.0。

2、做一个OpenCV C++小程序验证OpenCV的C++接口
打开我之前做的opencv验证小程序,ch2_1
在这里插入图片描述
打开第一个CmakeLists.txt,如下:

cmake_minimum_required (VERSION 3.0)
cmake_policy(SET CMP0012 NEW)
PROJECT(Ch2_1)

find_package(OpenCV REQUIRED)
message(" opencv version: ${OpenCV_VERSION}")
include_directories(${OpenCV_INCLUDE_DIRS})        # Not needed for CMake >= 2.8.11

ADD_EXECUTABLE( sample1 sample1.cpp )
TARGET_LINK_LIBRARIES(sample1 ${OpenCV_LIBS})

我在第六行添加了一个message可以看到当前的opencv版本号。
第二个文件就是图像处理领域大名鼎鼎的lena头像了。大家随便找个图就行。我还是把图贴上吧…
在这里插入图片描述

第三个sample1.cpp文件也很简单,就是将彩色图转换成灰度图,并在终端显示指定位置的像素值。
sample1.cpp文件如下:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

// OpenCV includes
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;

int main( int argc, const char** argv )
{
	// Read images
	Mat color= imread("../lena.jpg");
	Mat gray= imread("../lena.jpg", IMREAD_GRAYSCALE);
	
	if(! color.data ) // Check for invalid input
	{
		cout << "Could not open or find the image" << std::endl ;
	 	return -1;
	}

	// Write images
	imwrite("lenaGray.jpg", gray);
	
	// Get same pixel with opencv function
	int myRow=color.cols-1;
	int myCol=color.rows-1;
	auto pixel= color.at<Vec3b>(myRow, myCol);
	cout << "Pixel value (B,G,R): (" << (int)pixel[0] << "," << (int)pixel[1] << "," << (int)pixel[2] << ")" << endl;
	
	// show images
	imshow("Lena BGR", color);
	imshow("Lena Gray", gray);
	// wait for any key press
	waitKey(0);
	return 0;
}

用WinSCP把ch2_1文件夹拷到树莓派中,然后在终端运行下列命令:
$mkdir build; cd build
$cmake …/
$cmake --build .
$./sample1
下面的截图就是运行情况:
在这里插入图片描述
从上图可看到CMake检测到了opencv的版本为4.5.0
在这里插入图片描述
运行sample1文件后,当正常看到了两张美丽性感的Lena图后,代表opencv的C++接口也可以正常使用了。
在这里插入图片描述
至此,opencv4.5.0就成功安装到树莓派上了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值