Ubuntu下opencv4需要cmake3以上的版本
参考(27条消息) Linux系统Cmake安装教程_表情~大师的博客-CSDN博客https://blog.csdn.net/qq_50972633/article/details/130444223
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
下载地址:Download | CMake (opencv.org)https://opencv.org/releases/
解压
unzip opencv-4.3.0.zip
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
这条命令会在build目录里生成对应配置的Makefile文件,可以看到配置信息之间是通过空格和-D来分割和标示的,配置了很多信息,我觉得比较重要的一个是 -D OPENCV_GENERATE_PKGCONFIG=ON,生成opencv.pc文件的配置(注意,opencv4生成的文件叫做opencv4.pc),另外就是 CMAKE_INSTALL_PREFIX=/usr/local这个关于安装路径的配置,这里的安装路径是在/usr/local下,这也是opencv的默认配置。
sudo make install
可以使用make -j8多开线程加快编译速度
sudo gedit /etc/ld.so.conf
在文件中加上一行 /usr/local/lib,因为makefile中默认opencv安装在该路径下。
运行ldconfig,使添加的库路径生效
sudo ldconfig
修改bash.bashrc
sudo gedit /etc/bash.bashrc
在文件末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
导出环境变量
export PKG_CONFIG_PATH
运行该脚本 生效新设的环境变量
source /etc/bash.bashrc
在命令行中输入如下命令,检测opencv是否安装成功
pkg-config opencv --modversion
如果安装的是opencv4以上版本输入
pkg-config opencv4 --modversion
首先在opencv源码目录中创建文件夹,把项目存进去
mkdir mytest #生成文件
cd mytest #进入文件夹
创建一个test.cpp
touch test.cpp
源码如下
#include
#include
#include
#include
#include
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(cap.get(CAP_PROP_FRAME_WIDTH));
int h = static_cast(cap.get(CAP_PROP_FRAME_HEIGHT));
Size videoSize(w, h);
double fps=25.0;
//VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);
VideoWriter writer;
writer.open("RecordVideo.avi", cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), fps, 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();
return 0;
}
使用gcc编译
g++ -o edge test.cpp `pkg-config --cflags --libs opencv4`
sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv4 /usr/local/include/opencv /usr/include/opencv
/usr/include/opencv4 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv
/usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
pkg-config opencv --modversion
pkg-config opencv4 --modversion
常见天坑
1.pkg-config配置不全,找不到头文件和库路径
2.系统自带的有opencv2,版本冲突(删除即可)
3.安装成功后没有更新动态库
4.安装配置都成功后,编译示例时没有启用c++11(指令后面加入-std=c++11即可)
g++ -o edge test.cpp `pkg-config --cflags --libs opencv4` -std=c++11