1、树莓派上安装配置opencv
我们从 opencv官网下载source文件,得到zip压缩包,这里推荐下载最新版本的Opencv,这里下载的是3.4.3版本,在安装前首先需要安装依赖包,在控制台输入:

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\然后下载OpenCV3.2.0和OpenCV_contrib-3.2.0,下载需要等待一段时间

之后输入:

unzip opencv-3.4.3.zip #解压文件
cd opencv-3.4.3 #进入文件夹
mkdir build #创建编译文件夹
cd build #进入
camke .. 
sudo make -j1

-j 是使用多少线程进行编译,在Ubuntu虚拟机上由于我设设置的性能较好,可以使用-j8进行编译,也就是8线程,而在树莓派上则是使用的单线程编译,速度会慢很多,但是保证不会死机,一开始使用-j4时到99%时就死机了。如果-j后不加数字,则默认不限制线程编译

在这里插入图片描述

编译完成后输入:

sudo make install #执行安装

只要过一会就安装完成了。

2、编写Opencv代码
代码如下:

#include <iostream>
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/opencv.hpp> 
using namespace std; 
using namespace cv; 
void fun2(Mat); 
int main() 
{ 
	Mat img = imread("orgin.png");//引入源图片文件 
	if (img.empty()) 
	{ 
		return -1;//若没有图片文件,则为退出 
	} 
	fun2(img);//将源图片文件传入
	fun2() namedWindow("orgin");//新建窗口 
	imshow("orgin",img);//在orgin窗口下显示img 
	namedWindow("new"); 
	waitKey(0); 
} 
void fun2(Mat img) 
{ 
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));//图像处理的主要函数,函数的参数第一个为选择的样式,这里我选择的是MORPH_RECT样式,大小设置为15 
	Mat dstimg; erode(img, dstimg, element);//将源文件进行处理,生成新的图像文件 
	imshow("new", dstimg); 
	imwrite("new.jpg", dstimg);//将处理后的新图像文件保存为new.jpg 
}

新建一个文件夹,之后将图像文件和cpp文件放入在同一文件夹内。

3、运行代码
在树莓派上运行Opencv的代码有点繁琐,首先需要安装cmake gui,使用图形界面会比较方便些,这里在终端直接输入:

sudo apt-get cmake-gui

进行安装。我们开始运行代码。在刚刚的文件夹里新建一个txt文件,这里推荐使用vim,当然也可以使用其他的文本编辑器,取名为CmakeLists.txt。CmakeLists的内容可以到Opencv的安装目录中找到Opencv官方的例子中直接复制过来就可以,不过需要改几个地方。

# cmake needs this line
cmake_minimum_required(VERSION 2.8)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

if(CMAKE_VERSION VERSION_LESS "2.8.11")
  # Add OpenCV headers location to your include paths
  include_directories(${OpenCV_INCLUDE_DIRS})
endif()

# Declare the executable target built from your sources
add_executable(opencv_example opencvtest.cpp)

# Link your application with OpenCV libraries
target_link_libraries(opencv_example ${OpenCV_LIBS})

首先是为你的Opencv项目取名,当然如果不想改的话官方给的实例里已经给你取好了,其次就是将add_executable中的cpp文件改成自己写的代码的文件名,这样才可以知道编译的是哪个文件。

接下来就是使用cmake-gui编译了。打开终端,输入:

cmake-gui

打开cmake-gui后看到界面,源代码处我们选择刚刚创建的文件夹,二进制文件一样也选择刚刚创建的文件夹,点击Add Entry,输入Opencv的安装位置,选择build文件夹,如图:
在这里插入图片描述

接着分别点击Configure和Generate,显示Configure Done和Generate Done就说明成功了。

回到终端,cd进入刚刚的文件夹,输入:

ls #查看生成的可执行文件的名称

接着输入:

./opencv_example

运行。运行结果如下:
在这里插入图片描述
个人博客:naohmurderer.tk(不定时分享小技术和音乐)

更多推荐