赞
踩
以下内容来百度百科
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供 Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
1、官网下载opencv-3.4.1
2、解压后,将文件夹复制到Ubuntu系统中,注意存放位置
2、进入opencv文件夹,安装依赖库和cmake ,如果提醒需要apt-get update,输入sudo apt-get update,然后执行
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
3、创建编译的文件夹
mkdir build_test
4、进入创建好的文件夹,cmake创建make文件夹
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
时刻检查注意自己的当前工作目录
5、编译库,这里为提高编译速度,使用多线程并行方式,最高线程数为自己处理器内核数的两倍,这里使用4线程,make -j4
sudo make -j4
大概需要12分钟~
编译完成后执行安装
sudo make install
6、接下来配置opencv的环境
sudo gedit /etc/ld.so.conf.d/opencv.conf
/usr/local/lib
sudo ldconfig
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
sudo updatedb
opencv安装成功 ✌
1、准备图片素材,将图片与程序文件放到同意目录下,本例都放到opencv目录下
2、跳转到opencv目录中,创建编写c文件test1.cpp,注意程序中图片的名字与位置要与实际情况一致,本例因为图片与程序在同一目录,所以直接填写图片名称
#include <opencv2/highgui.hpp> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(int argc, char** argv) { CvPoint center; double scale = -3; IplImage* image = cvLoadImage("7.jpg"); argc == 2? cvLoadImage(argv[1]) : 0; cvShowImage("Image", image); if (!image) return -1; center = cvPoint(image->width / 2, image->height / 2); for (int i = 0;i<image->height;i++) for (int j = 0;j<image->width;j++) { double dx = (double)(j - center.x) / center.x; double dy = (double)(i - center.y) / center.y; double weight = exp((dx*dx + dy*dy)*scale); uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3); ptr[0] = cvRound(ptr[0] * weight); ptr[1] = cvRound(ptr[1] * weight); ptr[2] = cvRound(ptr[2] * weight); } Mat src;Mat dst; src = cvarrToMat(image); cv::imwrite("test.png", src); cvNamedWindow("test",1); imshow("test", src); cvWaitKey(); return 0; }
3、编译,使用 g++
g++ test.cpp -o test `pkg-config --cflags --libs opencv`
在上面的编译命令中我们其实用到了一个工具“pkg-config”,它主要有以下几个功能:
1.检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。
2.获得编译预处理参数,如宏定义,头文件的位置。
3.获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。
4.自动加入所依赖的其它库的设置
有了这个工具之后我们的编译就很方便了(不过在此之前你要确保你安装的OpenCV的安装链接库文件的目录下有一个pkgconfig文件夹,在该文件夹里面有个opencv.pc的文件,其实这就是pkg-config下OpenCV的配置文件)。
使用pkg-config时,选项–cflags 它是用来指定程序在编译时所需要头文件所在的目录,选项 --libs则是指定程序在链接时所需要的动态链接库的目录。
(以上内容来自:https://www.cnblogs.com/Crysaty/p/6638152.html)
./test
1、调用opencv用摄像头显示图像的最简程序,首先要将摄像头连接到虚拟机
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture capture(0); //读入视频,实例化的同时再初始化
//循环显示每一帧
while(1)
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取当前帧
imshow("读取视频",frame); //显示当前帧
waitKey(30); //延时30MS
}
return 0;
}
//若视频播放完成,退出循环
if(frame.empty())
{
break;
}
imshow("读取视频",frame); //显示当前帧
waitKey(30); //延时30MS
}
2、摄像头图像操作改进版
/********************************************************************* 打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi *********************************************************************/ #include<iostream> #include <opencv2/opencv.hpp> #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; void main() { //打开电脑摄像头 VideoCapture cap(0); if (!cap.isOpened()) { cout << "error" << endl; waitKey(0); return; } //获得cap的分辨率 int w = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_WIDTH)); int h = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_HEIGHT)); Size videoSize(w, h); VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, 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(); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。