树莓派+Opencv(一)图像处理
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(不定时分享小技术和音乐)
更多推荐

所有评论(0)