树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑

1、更换清华园,否则gtk2.0安装失败;血泪的教训,本来不想换的,折腾了老久还是未解决,直接更换源就可以顺利安装了。

参考链接:https://blog.csdn.net/la9998372/article/details/77886806

2、必须使用16G以上的卡,最好是class10以上,实测8G class6卡安装到35%就爆满了,推算安装完成要4.6G左右。

本例16G class4卡,默认初始系统镜像8G,初始占比就已经64%;

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第1张图片


充分使用整个存储空间,使用命令:sudo raspi-config,7 高级选项,A1 拓展文件系统,extend到16G,

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第2张图片

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第3张图片

修改后,初始占比降低一半到了31%;

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第4张图片

跟着下面教程走,最终安装完成后,空间占比高达73%,整整用了5G;

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第5张图片

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第6张图片

class4速度太慢了,sudo make,花时间最长,好几个小时,中间因为WiFi链接不稳定,ssh还终止过,实在不能忍。

3、强烈用HDMI或VNC直接在树莓派上装,千万不要用ssh,时间太久一旦断线又得重新编译过,血与泪的教训啊。

如果掉线或出错,删除release文件夹全部内容,再新建release,设置cmake编译参数:

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON ..

正式编译

// 编译,以管理员身份,否则容易出错
sudo make
// 安装
sudo make install
// 更新动态链接库
sudo ldconfig

技巧:运行cmake后,用ls查看release文件夹,确认有内容,

//返回文件夹opencv-3.4.1
cd ..
//备份release文件夹,出错后可直接删除release,把备份文件夹release1改回release即可避免重新运行cmake,节省时间
sudo cp -r release release1

4、规避掉前面的各种坑,再看 OpenCV3.4.1 安装参考教程,应该就能顺利安装了:

(树莓派、linux通用)OpenCV3源码方式安装教程(最新3.4.1)

5、案例测试

上面教程中的案例,一般都能通过,python大法好,但是测试其他C++的案例时就各种报错,

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第7张图片

测试案例:

通过代码载入一张图片,通过opencv把彩色图片转换为黑白图片,并把原图和转换后的图片输出到屏幕中。

树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑_第8张图片

test.cpp

#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

int main (int argc, char **argv)
{
    Mat image, image_gray;

    if (argc != 2 || !image.data) 
    {
        cout << "No image data\n";
        return -1;
    }

    cvtColor(image, image_gray, CV_RGB2GRAY);

    namedWindow("image", CV_WINDOW_AUTOSIZE);
    namedWindow("image gray", CV_WINDOW_AUTOSIZE);

    imshow("image", image);
    imshow("image gray", image_gray);

    waitKey(0);
    return 0;
}

makefile

INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
SOURCES = test.cpp
# 目标文件
OBJECTS = $(SOURCES:.cpp=.o)
# 可执行文件
TARGET = test
$(TARGET):$(OBJECTS)
	g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
$(OBJECTS):$(SOURCES)
	g++ -c $(SOURCES)
clean:
	rm $(OBJECTS) $(TARGET)
# 编译规则 $@代表目标文件 $< 代表第一个依赖文件
%.o:%.cpp
	g++ -I $(INCLUDE) -o $@ -c $<

编译并执行,载入一张名为lena.jpg图片,图片和可执行文件test应在同一个目录中,

sudo make
sudo ./test lena.jpg

使用树莓派系统自带的编辑工具处理代码,复制粘贴是要注意,对比清楚,系统可能会自动加 #号或者有缺漏;

默认设置需要做相应修改,否则会出错:



编写这个文件的时候,9行12行前面用的是4个空格符,而不是tab,所以造成了操作符丢失的错误。只需把缩进的空格delete掉,然后按tab键用tab代替4个空格,问题就可能解决。

另外vim中Tab默认是8格,如果使用vim编辑,需要修改默认配置:

1. 打开设置文件:

sudo vim /etc/vim/vimrc  

2. 在底部添加以下代码:

set smartindent  
set tabstop=4  
set shiftwidth=4  
set expandtab  
set softtabstop=4  

Tab修改为4格,即可正常使用tab代替4个空格。

由于才疏学浅留下的遗憾:


树莓派一直显示 no image data,并没有得到黑白图片,知道原因的可以在评论区交流下,不胜感激。

案例来源:

树莓派2+OpenCV环境搭建

https://blog.csdn.net/zx3517288/article/details/51706825

你可能感兴趣的:(树莓派 OpenCV3.4.1 安装血泪史,分享如何规避各种坑)