首先更新或者安装一下camke,Ubuntu下默认的是3.5.1,最好更新到3.10以上。不然可能会出现问题,然后安装一下依赖库这种网上找找一大堆基本上都有,我这个不行的话去看看其他的
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
然后去官网下载源码,我遇到了浏览器提示下载不安全,不让下载的问题,网上不知道是没有还是我搜的不对,找不到方法,之后自己解决了,最简单的就是复制下载的链接,在Ubuntu终端打入:wget +空格+下载网址就行了,适用大部分链接,不行的话可能是Ubuntu软件更新那里设置不对。
下载解压之后进入解压文件里打开终端执行以下代码:
//创建build并进入,然后cmake一下。
mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
//然后编译
sudo make -j 8
//编译完安装
sudo make install
然后配置环境打开文件:
sudo gedit /etc/ld.so.conf
之后在末尾换行加入:/usr/loacal/lib
再打开bash.bashrc文件配置
sudo gedit /etc/bash.bashrc
末尾换行加入:PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
这里的大部分网上教程有。我只是遇到问题然后写下来希望别人别像我一样一个小问题搞半天,所以安装教程很简单,大部分网上有,就是无法下载的问题提了一下。
然后是最初级的教程,尽量讲的详细点。如果是初学者可以看一下。只涉及显示,保存和截图。
打开opencv的文件夹进入/samples/cpp/example_cmake这个文件,里面有可运行文件的话直接运行,测试一下,应该会显示一个hello opencv。
然后是我根据示例代码和网上别的大佬改的示例。
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/opencv.hpp"
#include <iostream>
#include <unistd.h>
using namespace cv;
using namespace std;
void drawText(Mat & image);
int main()
{
// for(;;)
// {
/* VideoCapture inVid('O') ; //打开默认摄像机
if ( !inVid.isOpened () )
{ //检查错误
cout << "Error! Camera not ready...\n";
return -1;
}
上面是我测试摄像头的,现在我暂时还不会在虚拟机下打开摄像头只是做测试用的
*/
// Mat是一个类,定义的是图片读取之后的东西,imread函数就是一个读取图片的函数,后面可以加一些命令,设置图片的参数。
Mat image = imread("jyy.png");
//imshow函数在Ubuntu下显示一下图片,如果不加下面的waitKey函数的话,图片显示就看不出来,设置的是图片显示时间里面的参数是ms,300就是0.3秒。
imshow("原图",image);
//这个就是截图功能了,定义一个roi用selectROI这个函数赋值,之后再赋值给新定义的Mat类型的im。
Rect2d roi=selectROI(image);
Mat im = image(roi);
imshow("ROI",im);
waitKey(300);
//这个函数是设定参数的尺寸的,简单的讲就是800是长,600是宽,只改变大小,不改变图片内容。
resize(image,image,Size(800,600));
//这个是示例代码自带的函数下面有定义
drawText(image);
//show一下。
imshow("缩小",image);
//保存文件,如果不加绝对路径默认当前路径,必须要加后缀。
imwrite("roi.png",im);
sleep(3);
imwrite("jyy1.png",image);
//改变颜色灰度,后面大写的是宏,这个的意思是以黑白形式输出,其他的可以去网上找
cvtColor(image,image,CV_RGB2GRAY);
imshow("hui",image);
imwrite("jyyhui.jpg",image);
waitKey(300);
// }
}
void drawText(Mat & image)
{
//这个函数调用了putText这个函数,具体是调用是putText(图片,显示的内容,位置,字体和比例,颜色,线厚度和类型);
putText(image, "Hello OpenCV",
Point(20, 50),
FONT_HERSHEY_COMPLEX, 1, // font face and scale
Scalar(255, 255, 255), // white
1, LINE_AA); // line thickness and type
}
没学过cmake的建议去了解一下,和make差不多,想要运行在当前终端输入make就好了。如果没有makefile文件那需要输入cmake .然后再make