本文主要是介绍树莓派4B安装opencv以及错误解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
欢迎访问我的博客:konosuba.xyz
更新于2020/4/27 更新:换了个树莓派4B,安装opencv的时候遇到了一些之前没碰到的问题,在这里记录一下
主要参考opencv官网文档和博客树莓派+Opencv(一)图像处理
树莓派4B上安装参考:树莓派4B 安装opencv完整教程基于python3(各种错误解决)
下载安装依赖项
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
在4B上安装时遇到libgtk2.0-dev
安装失败的问题:
这是因为依赖项版本太高了,需要降级安装。所以可以使用命令sudo aptitude install libgtk2.0-dev
来进行安装
在安装过程中,首先会给出一个方案提示是否接受,第一个给出的方案是保留原依赖项,我们要输入n
否定它,之后给出第二个方案是降级安装,输入Y
使用该方案
其中
aptitude
是一个类似apt-get
的包管理工具,但是它能更好处理依赖问题,支持降级安装
下载源码
从GitHub下载:
opencv
opencv_contrib
两个都下载.zip
压缩包即可
解压源码并进入文件夹
unzip opencv-4.3.0.zip
unzip opencv_contrib-4.3.0.zip
cd opencv-4.3.0
创建一个build文件夹用于编译
mkdir build
cd build
运行cmake-gui
这一步其实也可以直接使用
cmake
配合各类参数,不过我觉得图形化界面方便一点
cmake-gui
选择源码路径和编译路径后点击Configure
之后在中间的选择框中找到项目BUILD_TESTS
,把它的复选框取消
这一步是因为后面编译过程中,总是由于
opencv_test_xxx
这类项目导致编译失败,因此我在这里将它取消
之后点击Generate
生成,最后输出如图所示则可以进行下一步
编译
在build
目录执行make
开始编译,-j
表示使用多少线程进行编译,不加数字代表不限制(很容易出问题,不推荐)
之前使用树莓派3B我选择的-j1
,用时约3小时;现在4B我选的是-j4
,用时约半个小时
sudo make -j4
问题
我的4B在这一步就遇到了一个问题,如图
(这个图我是找的其他人的,不过错误都是一样的)
这是一个包丢失的问题,解决方案:
可以在一个大佬的百度云盘里下载
将所有带
i
结尾的文件全部都拷贝到opencv_contrib/modules/xfeatures2d/src/
路径下即可
树莓派安装opencv时丢失的文件:
链接:https://pan.baidu.com/s/1xi6_5NuTFiP4SD649FgIJw
提取码:mbsj
原文链接:https://blog.csdn.net/weixin_43308627/article/details/97814927
之后重新make
就可以再次开始
安装库
在build
目录执行
sudo make install
完成后opencv就已经配好了
测试
Python运行
使用这里提供的测试程序测试opencv是否正常
# -*- coding:utf-8 -*-
import cv2
import numpy as np
cv2.namedWindow("gray")
img = np.zeros((512,512),np.uint8)#生成一张空的灰度图像
cv2.line(img,(0,0),(511,511),255,5)#绘制一条白色直线
cv2.imshow("gray",img)#显示图像
#循环等待,按q键退出
while True:key=cv2.waitKey(1)if key==ord("q"):break
cv2.destoryWindow("gray")
最后运行正常,如图
C++运行
先使用cmake编译,再使用make编译
编写cpp代码
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv; int main(int argc, char const *argv[])
{Mat img = imread("image.jpg"); if (img.empty()){cout << "error!" << endl; exit(0)}namedWindow("image1", WINDOW_NORMAL); namedWindow("image2", WINDOW_NORMAL); imshow("image1", img); cvtColor(img, img, COLOR_BGR2GRAY); blur(img, img, Size(7, 7)); Mat edges; Canny(img, edges, 3, 9, 3); imshow("image2", edges); waitKey(0); return 0;
}
在同目录创建CMakeLists.txt文件
内容:
cmake_minimum_required(VERSION 2.6)
project(test_opencv) #项目名 可改
find_package(OpenCV REQUIRED)
add_executable(test_opencv test_opencv.cpp) #项目名和cpp文件名
target_link_libraries(test_opencv ${OpenCV_LIBS}) #项目名
之后就能用cmake编译啦
cmake .
make
运行
编译完成后,使ls
查看目录下文件
绿色的就是编译生成的文件
运行试试
./opencvtest
于是树莓派的opencv终于安装完成啦,接下来就要调用树莓派摄像头啦
这篇关于树莓派4B安装opencv以及错误解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!