欢迎访问我的博客: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终于安装完成啦,接下来就要调用树莓派摄像头啦