欢迎访问我的博客:konosuba.xyz

主要参考opencv官网文档和博客树莓派+Opencv(一)图像处理

下载安装依赖项

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

从opencv官网下载v4.1.0的源码

官网

使用CMake编译源码

先解压并进入文件夹

unzip opencv-4.1.0.zip
cd opencv-4.1.0

创建一个build文件夹用于编译

mkdir build
cd build

运行cmake-gui

cmake-gui

选择源码路径和编译路径后电子config开始编译

]

编译结束后点击generate完成

]

建立

在build目录执行make开始编译
-j表示使用多少线程编译,树莓派用-j1较稳定,不加数字表示不限制线程

sudo make -j1

]

博主在这一步编译了四个小时

安装库

在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终于安装完成啦,接下来就要调用树莓派摄像头