ubuntu18安装NVIDIA驱动、安裝CUDA、安裝CUDNN、安裝tensorflow、ubuntu18下安裝opencv、安装opencv-python

*免责声明:
1\此方法仅提供参考
2\搬了其他博主的操作方法,以贴上路径.
3*

场景一:安装NVIDIA驱动

场景二:安装CUDA

场景三:安装CUDNN

场景四:安装tensorflow

场景五:ubuntu18下Anaconda安裝opencv(待解决)

场景六:ubuntu18下源码编译的安裝方式安装opencv

场景七:安装opencv-python

.
.
.
.


场景一:安装NVIDIA驱动


方式一:(不推荐)

参考博文

查看gpu与推荐的NVIDIA驱动版本

命令: ubuntu-drivers devices

在这里插入图片描述

上图1为我的gpu信息,2为推荐的,从上图可以看出,我的显卡是:GM204M [GeForce GTX 970M],推荐安装的版本号是:nvidia-driver-460 - distro non-free recommended。
如果同意安装推荐版本,那我们只需要终端输入:

命令:     sudo ubuntu-drivers autoinstall 

当然我们也可以使用 apt 命令安装自己想要安装的版本,比如我想安装 340 这个版本号的版本,输终端入:sudo apt install nvidia-340 就自动安装了。


命令:sudo apt install nvidia-340 

安装过程中按照提示操作,除非你知道每个提示的真实含义,否则所有的提示都选择默认就可以了,安装完成后重启系统,NVIDIA显卡就可以正常工作了。 安装完成后

命令:    nvidia-smi

在这里插入图片描述
或者电脑重启搜索 nvidia
在这里插入图片描述

查看系统中安装了哪些NVIDIA的驱动

命令:        sudo dpkg --list | grep nvidia-*

2、卸载NVIDIA驱动

sudo apt-get --purge remove nvidia-*

.

方式二:推荐

  1. 下载相应驱动
    ubuntu-drivers devices 这个命令可以查看电脑gpu信息。

在这里插入图片描述

在官网选择适应你 GPU 的驱动版本,在下载界面可用右键得到下载链接,然后在 linux 命令行下使用 wget 进行下载,如我下载的是的驱动版本:

下载网址

在这里插入图片描述

  1. 关闭 X 服务 为了能够安装新的 nvidia 驱动,我们需要关闭这个 X 服务,我的 Ubuntu 是基于 gdm类型的桌面系统,采用如下命令:
命令:   sudo service gdm stop

对于其他的 linux 版本,如果桌面系统是基于 lightdm 类型,应该把命令中的gdm改为lightdm即可;非这两种桌面系统类型的,百度一下你的 linux 版本关闭 X 服务的相关命令吧。

3、卸载NVIDIA驱动 命令选用

命令:     sudo apt-get --purge remove "*nvidia*"
命令:     sudo apt-get autoremove --purge nvidia-*
命令:     sudo /usr/bin/nvidia-uninstall

4、禁用自带的 nouveau nvidia驱动 首先利用命令行打开

命令:   sudo gedit /etc/modprobe.d/blacklist.conf

在文件末端加入

blacklist nouveau
options nouveau modeset=0

然后更新

sudo update-initramfs -u

最后重启
终端下输入命令 lsmod | grep nouveau 查看是否被禁用

  1. 安装新驱动 在第 1 步下载的驱动文件目录里运行安装包即可:
待修改命令:    sudo sh NVIDIA-Linux-x86_64-460.32.03.run

命令:          modprobe nvidia

6.检查驱动是否安装成功

命令:          nvidia-smi

7.命令sudo reboot 重启

.

场景二:安装CUDA


方式一:不推荐

这种方式我的理解是,版本不能确定,第二安装的位置找不到。 经过上述的系统安装驱动,我们直接输入命令: nvcc -V

在这里插入图片描述

系统直接推荐命令:sudo apt install nvidia-cuda-toolkit

在这里插入图片描述

完成以后,再输入命令:  nvcc -V   好家伙,直接安装好了,不过版本不一定是自己想要的。

方式二:推荐

参考博文

1、下载cuda

下载地址

在这里插入图片描述
在这里插入图片描述

执行待修改命令,这个命令应该是你自己选择以后生成的官方推荐:

wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run

上面下载可能非常非常的慢,下载完成以后。

2、安装cuda
到自己的目录下

待修改命令: sudo sh  cuda_11.1.0_455.23.05_linux.run*

选accept

在这里插入图片描述

去掉驱动

在这里插入图片描述

出现下面的警告,问题不大

在这里插入图片描述

3、设置环境变量
修改bashrc这个文件,在终端输入

命令:   sudo gedit ~/.bashrc

然后会弹出来一个文档,在这个文档的末尾添加下面三句话,修改这个文档应该需要root权限,不然改了等于没改。也需要修改成为自己对应的路径。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64
export PATH=$PATH:/usr/local/cuda-11.1/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.1

用su直接切换到root,再执行   source ~/.bashrc

4、验证

命令: nvcc -V

在这里插入图片描述

显示上面信息就是自己装好了cuda

5、删除cuda,有需要的话

删除文件夹的形式:     sudo rm -rf /usr/local/cuda-11.1
应用cuda携带的程序卸载:  sudo /usr/local/cuda/bin/cuda-uninstaller

场景三:安装CUDNN


1、下载CUDNN

下载地址

根据自己的需要下载,我前面安装的cuda是11.1,所以我下载了这个
在这里插入图片描述
在这里插入图片描述

不知道上面4个到底有啥区别,我直接下载了1,下载需要注册登录,可能速度慢。

2、解压
下载好的文件为 cudnn-11.1-linux-x64-v8.0.4.30.solitairetheme8

我们只需要解压,然后拷贝到cuda的安装目录下即可!

待修改解压命令:
tar zxvf  cudnn-11.1-linux-x64-v8.0.4.30.solitairetheme8

3、把解压文件中的文件复制到cuda的安装目录下,路径改为自己的。

sudo cp  /home/guoyao/ruanjian/cudnn/cudnn-11.1-linux-x64-v8.0.4.30/cuda/lib64/*   /usr/local/cuda-11.1/lib64/


sudo cp /home/guoyao/ruanjian/cudnn/cudnn-11.1-linux-x64-v8.0.4.30/cuda/include/*    /usr/local/cuda-11.1/include/

在这里插入图片描述

4.增加权限

 sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h
 sudo chmod a+r /usr/local/cuda-11.1/lib64/libcudnn*

5.配置环境,链接


sudo gedit ~/.bashrc
尾部加入
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
保存,执行生效
source ~/.bashrc

6、拷贝完成之后,可以使用以下命令查看CUDNN的版本信息

 sudo cat /usr/local/cuda-11.1/include/cudnn_version.h |grep CUDNN_MAJOR -A 2

在这里插入图片描述

上述6可能会出现显示不出来的问题,原因就是文件夹的路径或者文件找错了,不过别担心,只要你把下载出来的相应的文件拷贝到cuda中就可以了。

.


场景四:安装tensorflow


1、注意点

要启用Python tensorflow模块运行,请执行以下操作:
注意你可能装过anaconda,
anconda带的是python3.7,ubuntu自己带的是2.7和3.6.
当你输入python的时候,可能将anaconda带的python3.7为设置系统默认,然而当系统在用这种方式去安装tensflow的时候,只会考虑ubuntu带的2个python版本及2.7或者3.6。
.
当你去执行导入模板的时候,会报错,所以这里应该将系统的python设置为ubuntu的自带的python3.6。无需要就跳过
home路径下终端输入:

echo alias python=python3 >> ~/.bashrc

如果是python3.7和python3.6共存,但是想默认是3.6而不是3.7,需要执行

echo alias python3=python3.6 >> ~/.bashrc

然后source一下:

source ~/.bashrc

2、查看pip属于哪个python版本

pip -V
pip3 -V

3、查看tensorflow对应的cuda和cudnn的版本要求,要不然下载了,版本不对,也会出现问题。
查看地址

4、pip安装

sudo apt install python3-pip
pip3 install tensorflow_gpu

5、测试
在终端输入python出现转换到python的命令界面,依次输入

import tensorflow as tf
sess = tf.Session()
a = tf.constant(1)
b = tf.constant(2)
print(sess.run(a+b))

场景五:ubuntu18下Anaconda安裝opencv(待解决)


在Ubuntu的Anaconda环境下安装OpenCV比较方便,直接在终端中输入以下命令:

conda install --channel https://conda.anaconda.org/menpo opencv3
第二种方法:conda install -c https://conda.binstar.org/menpo opencv3

这个方式安装的是OpenCV2.4.11版本,如果要安装OpenCV 3版本,把上述命令中的 opencv换成opencv3就行了,安装的是3.2.0版本。 输入命令之后会有提示将要安装的OpenCV版本,输入 y 同意后开始下载安装:
安装很方便,有一个问题就是一般下载的速度比较慢,容易中断,可以多试几次 OpenCV 3.版本安装成功界面:

当然也可能出现如下报错

在这里插入图片描述

原因分析
Ubuntu18.04系统自带了两个版本的Python解释器Python2.7和python3.6,由于python3.6使用更多,后来又使用anaconda3安装深度学习环境,内含python3.7,因此为了方便管理,更改python默认版本,关于更改python默认版本见如何更改默认python解释器,将python命令默认指向为python3.6解释器,python3默认为python3.7解释器.python2默认指向python2.7.事情进展很顺利,后来在使用conda命令时出现
后来分析可能是由于conda自带的默认python解释器是python3.7,此时我已经把python指定为3.6,所以造成conda的python解释器冲突造成上面的问题.


场景六:ubuntu18下源码编译的安裝方式安装opencv


一:前期工作

1.配置python3.6的基础库,这一步至关重要,如果不配置,可能影响后面的相关配置,例如opencv会找不到python.h文件

sudo apt-get install libpython3.6-dev
sudo apt install python3-pip

2.安裝其他依赖

sudo apt install gcc
sudo apt install net-tools
sudo apt install  git

3.安装opencv相关的依赖和其他的依赖

(1)、libopencv-dev依赖包

sudo apt install libopencv-dev

(2)、相关的基础库

sudo apt-get install build-essential
sudo apt-get install cmake 

sudo apt-get install git
sudo apt-get install libgtk2.0-dev 

sudo apt-get install pkg-config 
sudo apt-get install libavcodec-dev
sudo apt-get install libavformat-dev 
sudo apt-get install libswscale-dev


#处理图像所需的包

sudo apt-get install libtbb2 
sudo apt-get install libtbb-dev 

sudo apt-get install libjpeg-dev 
sudo apt-get install libpng-dev 


sudo apt-get install libtiff-dev 
sudo apt-get install libjasper-dev 
sudo apt-get install libdc1394-22-dev

sudo apt-get install libcanberra-gtk-module
sudo apt-get install libavcodec-dev 
sudo apt-get install libavformat-dev 
sudo apt-get install libswscale-dev
sudo apt-get install libv4l-dev 
sudo apt-get install liblapacke-dev


#处理视频所需的包
sudo apt-get install libxvidcore-dev 

sudo apt-get install libx264-dev


#优化opencv功能
sudo apt-get install ffmpeg

4、可能出现的问题
Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

二:下载opencv源码

1.下载

sudo git clone https://github.com/opencv/opencv.git
sudo git clone https://github.com/opencv/opencv_contrib.git
cd opencv
sudo git checkout master          # 选择master版本分支
cd ..
cd opencv_contrib
sudo git checkout master          # 选择master版本分支
cd ..

2.升级cmake

参考博文

weeks@computer:~$               sudo apt-get install -y gcc gcc-c++
weeks@computer:~$               sudo mkdir /opt/cmake
weeks@computer:~$               cd /opt/cmake/
weeks@computer:/opt/cmake$      sudo  wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz

weeks@computer:/opt/cmake$      sudo  tar zxvf cmake-3.14.5.tar.gz
weeks@computer:/opt/cmake$      sudo apt-get  remove cmake -y
weeks@computer:/opt/cmake$      cd   ./cmake-3.14.5
weeks@computer:/opt/cmake/cmake-3.14.5$            sudo ./configure

weeks@computer:/opt/cmake/cmake-3.14.5$  sudo  make && sudo make install

修改环境变量
编辑 sudo vi /etc/profile.d/cmake.sh 文件写入以下内容:

export CMAKE_HOME=/opt/cmake/cmake-3.14.5     (这里是我的安装路径)
export PATH=$PATH:$CMAKE_HOME/bin

保存并退出,执行命令让cmake环境文件生效

source /etc/profile

cmake -version

三.编译源码

Ps 说明:如果下面编译有报错,可以删除非空文件夹及其目录下的所有文件夹及文件:下面如果编译有错误就去删除build文件夹 sudo rm -r build 然后重新来过.

1.拷贝
通过命令把opencv_contrib文件移动到opencv文件夹里面:

sudo cp -r opencv_contrib opencv
cd opencv
sudo mkdir build
cd build

2.创建配置文件
这里的语句选择蛮重要的
.
语句说明

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE  -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_EXAMPLES=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..

#输入:nproc,查看cpu内核数

weeks@computer:/opencv/build$     nproc

#有几个CPU就用几个CPU,这下面的8就是上面nproc返回的结果,如果下面有错误可以用make clean命令,不过更推荐上面开头讲的方式.

weeks@computer:/opencv/build$     sudo make -j8  
weeks@computer:/opencv/build$   sudo make install

3.可能出错提示

在进行cmake的时候的出错

错误一:
然而在下载过程中可能会出现下载不完全的情况(起码我是这样的),往往出现的问题是缺少boostdesc_bgm.i等问题。所以我们需要提前下载好这些文件,以防不时之需。
下载地址

在进行make的时候,大概到78%左右就会出现错误,提示你缺少.i文件。这个时候打开之前下载好的.i文件夹,删掉build文件夹,通过命令移植到缺失目录下,然后重新编译。

sudo cp * ../opencv/opencv_contrib/modules/xfeatures2d/src/

错误二: 移动文件,我的opencv在/目录下,防止报.h错误

sudo cp -r /opencv/modules/features2d /opencv/opencv_contrib/modules/xfeatures2d/test

错误三,在make的时候
在这里插入图片描述
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report
问题原因是因为内存不足 使用交换分区来解决:

方式一:不推荐

sudo dd if=/dev/zero of=/swapfile bs=64M count=16

(#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=1024MB)

sudo mkswap /swapfile         (#把刚才空间格式化成swap格式)
sudo swapon /swapfile         (#使用刚才创建的swap空间)

之后继续执行你的相关操作就可以了

*如果创建了临时空间之后仍提示“g++: internal compiler error: Killed (program cc1plus)”,可能是因为分配的空间不够大,可以继续分配更大的空间 After compiling, you may wish to shut the swap space down: .

sudo swapoff /swapfile
sudo rm /swapfile

方式二:编译速度就慢多了

weeks@computer:/opencv/build$     sudo make

.

四.配置环境变量

1、命令:sudo gedit /etc/ld.so.conf

打开后可能是空文件,在文件内容最后添加以下内容,其中/user/loacal是opencv安装路径也就是makefile中指定的安装路

  include    /usr/local/lib

2、使上述配置生效

  sudo ldconfig

3、配置bash

sudo gedit /etc/bash.bashrc  
//在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH 

4、更新bash文件

   source /etc/bash.bashrc 
   sudo updatedb

五.测试

1、opencv_version 查看版本号

在这里插入图片描述

2、pkg-config opencv --modversion

在这里插入图片描述

3、要启用Python cv2模块运行,请执行以下操作:
注意你可能装过anaconda,anconda带的是python3.7,ubuntu自己带的是2.7和3.6.
当你输入python的时候,可能将anaconda带的python3.7为设置系统默认,然而当系统在用这种方式去编译opencv时候,只会考虑ubuntu带的2个python版本及2.7或者3.6。当你去执行导入模板的时候,会报错,所以这里应该将系统的python设置为ubuntu的自带的python3.6。

home路径下终端输入:

命令:echo alias python=python3 >> ~/.bashrc

如果是python3.7和python3.6共存,但是想默认是3.6而不是3.7,需要执行

命令:echo alias python3=python3.6 >> ~/.bashrc

然后source一下:

命令:source ~/.bashrc

将cv2导入到python3.6中

sudo ln -s /usr/local/lib/python3.6/dist-packages/cv2 /usr/lib/python3.6/site-packages/

导入模块并打印OpenCV版本:

python -c "\
import cv2
print(cv2.__version__)"

在这里插入图片描述

python -c "\
import cv2 as cv
src=cv.imread("/1")
cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow('input_image', src)
cv.waitKey(0)
cv.destroyAllWindows()"

上面的第三句为图片的路径,一定要写对,这个在/下,注意图片名称。

在这里插入图片描述

4、使用opencv简单使用摄像头

参考博文

查看摄像头调用是否正常

命令: cheese   

如果没有安装,进行命令安装。安装的命令:sudo apt-get install cheese

在opencv下创建一个mytest文件夹,然后创建一个main.cpp文件

命令:sudo touch  main.cpp
命令:sudo  gedit /main.cpp

里面加入以下代码

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
        //从摄像头读取视频
        VideoCapture Capture(0);
        //循环显示每一帧
        while (1)
        {       Mat frame;//定义一个Mat变量,用于存储每一的图像
                Capture>>frame;//读取当前帧
                imshow("读取视频帧", frame);//显示当前顿
                waitKey(30);//延时30m
        }
        system("pause");
        return 0;
}

保存并编译,然后运行命令:

sudo g++ main.cpp `pkg-config opencv --libs --cflags opencv` -o main
运行命令:  sudo  ./main

在这里插入图片描述

改进:代码可以实现录制视频,按空格开始录制,再按空格结束录制,ESC停止录制并保存。
在opencv文件夹下创建了mytest文件夹,在mytest文件夹下创建main.cpp。 其中内容为:

命令:sudo touch  main2.cpp
命令:sudo  gedit /main2.cpp

里面内容为:

#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

int main()
{
	//打开电脑摄像头
	VideoCapture cap(0);
	if (!cap.isOpened())
	{
		cout << "error" << endl;
		waitKey(0);
		return 0;
	}

	//获得cap的分辨率
	int w = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_WIDTH));
	int h = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_HEIGHT));
	Size videoSize(w, h);
	VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);
	
	Mat frame;
	int key;//记录键盘按键
	char startOrStop = 1;//0  开始录制视频; 1 结束录制视频
	char flag = 0;//正在录制标志 0-不在录制; 1-正在录制

	while (1)
	{
		cap >> frame;
		key = waitKey(100);
		if (key == 32)//按下空格开始录制、暂停录制   可以来回切换
		{
			startOrStop = 1 - startOrStop;
			if (startOrStop == 0)
			{
				flag = 1;
			}
		}
		if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘
		{
			break;
		}

		if (startOrStop == 0 && flag==1)
		{
			writer << frame;
			cout << "recording" << endl;
		}
		else if (startOrStop == 1)
		{
			flag = 0;
			cout << "end recording" << endl;
			
		}
		imshow("picture", frame);
	}
	cap.release();
	writer.release();
	destroyAllWindows();
}

保存并编译,然后运行命令:

sudo g++ main2.cpp `pkg-config opencv --libs --cflags opencv` -o main2
运行命令:  sudo  ./main2

5、终端快捷编译方式
在mytest下创建test1.cpp

命令:sudo touch test1.cpp
命令:sudo  gedit /test1.cpp

内容为:其中我的图片的路径为/下

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
   CvPoint center;
scale = -3;

IplImage * image = cvLoadImage("/1"); // 切记图片命名要与程序中的命名相同包括大小写
argc == 2? cvLoadImage(argv[1]): 0;

cvShowImage("Image", image);

if (!image) return -1;    center = cvPoint(image->width / 2, image->height / 2);
for (int i = 0;i < image->height;i++)
    for (int j = 0;j < image->width;j++) {
        double dx = (double)(j - center.x) / center.x;
    double dy = (double)(i - center.y) / center.y;
    double weight = exp((dx * dx + dy * dy) * scale);
    uchar * ptr = & CV_IMAGE_ELEM(image, uchar, i, j * 3);
    ptr[0] = cvRound(ptr[0] * weight);
    ptr[1] = cvRound(ptr[1] * weight);
    ptr[2] = cvRound(ptr[2] * weight);
    }

Mat src; Mat dst;
src = cvarrToMat(image);
cv::imwrite("test.png", src);

cvNamedWindow("test", 1);
imshow("test", src);
cvWaitKey();
return 0;
}

保存并编译,然后运行命令:

sudo g++ test1.cpp `pkg-config opencv --libs --cflags opencv` -o test1
运行命令:  sudo  ./test1

在这里插入图片描述

6、make(makefiles)编译方式
cd到opencv/smaples/cpp/example_cmake目录下我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下按顺序执行,执行过程如下:

命令: cd  opencv/samples/cpp/example_cmake
命令: sudo  cmake .
命令: sudo  make
命令:  sudo  ./opencv_example*

在这里插入图片描述

7、测试可能出现的问题

参考博文

进入opencv/samples/cpp/example_cmake目录下:

cd  ./opencv/samples/cpp/example_cmake

修改example.cpp如下

#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>

using namespace cv;
using namespace std;

void drawText(Mat & image);
int main()
{
    Mat  image=imread("./darknet/data/dog.jpg");
    imshow("Sample",image);
    waitKey(0);
    return 0;
}

尝试make一下,发现报错如下
在这里插入图片描述

意思是说找不到opencv2/core.hpp这个头文件。而我们到/usr/local/include/opencv4/opencv2下,发现明明有这个头文件啊?问题就出在例程的Makefile里,打开Makefile看一看

问题找到了,第3、4行中显然是在pkgconfig中调用opencv,而我们的opencv4是在/usr/local/lib/pkgconfig/目录下自动生成的opencv4.pc,那么只需要把这两行的opencv改为opencv4就ok了。修改后保存,然后再make一下,这次不报找不到头文件的错了,但是出来了一堆其他的错误。拿出错误的前几行看一下。

在这里插入图片描述

可以发现,其意思是说opencv4需要c++11支持,而我们的makefile中并没有使用c++11去编译,所以解决办法就是在Makefiile中指定用c++11标准编译。再次打开Makefile,在第3行下加入CXXFLAGS += -std=c++11,最终的makefile如下所示

CXX ?= g++
CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv4)
CXXFLAGS += -std=c++11
LDFLAGS += $(shell pkg-config --libs --static opencv4)
 
all: opencv_example

opencv_example: example.o; $(CXX) $< -o $@ $(LDFLAGS)
 
%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)
 
clean: ; rm -f example.o opencv_example

保存后再次make,终于成功生成了可执行文件opencv_example,运行一下如下图,

 运行命令  : ./opencv_example

在这里插入图片描述

error: (-2:Unspecified error) Can’t initialize GTK backend in function
‘cvInitSystem’ 这个错误是example.cpp中图片路径出错了。

可能出现的错误四:

 输入 pkg-config --cflags opencv

在这里插入图片描述

解决方式一:
这是因为缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中,具体操作如下:
首先创建opencv.pc文件,这里要注意它的路径信息:

cd /usr/local/lib
sudo mkdir pkgconfig
cd pkgconfig
sudo touch opencv4.pc

然后在opencv4.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:

prefix=pkg-config --cflags opencv
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version:4.5.1          (注意这里的版本号)
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core

保存退出,然后将文件导入到环境变量:

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

至此就配置好opencv.pc啦~
再执行 pkg-config --cflags --libs opencv时输出结果如下:

在这里插入图片描述


场景七:安装opencv-python


1.使用如下命令

pip3  install opencv-python

2.安装opencv-contrib-python
opencv-pyhon中只是包含了opencv的主要模块,很多比较新的高级的算法、某些不免费的算法如sift、surf特征点算法没有包含进去,如果你想使用这些功能,需要卸载opencv-python,然后安装opencv-contrib-python。

pip3  install opencv-contrib-python

将自动安装最新版本。

you did it

在这里插入图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值