ubuntu下opencv图像编程
ubuntu下opencv的图像编程
- 一、ubuntu安装opencv-3.4.1
- 二、使用opencv打开一张图片
- 三、使用opencv打开摄像头
- 四、使用opencv打开一个视频文件
- 五、通过摄像头采集图像
一、ubuntu安装opencv-3.4.1
具体安装细节请参考:【嵌入式】Windows10&Ubantu16.04&树莓派3B+安装opencv教程.
二、使用opencv打开一张图片
新建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("lena.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;
}
保存并编译
gcc test.cpp -o test pkg-config --cflags --libs opencv
随便下载一张图片放在主目录,重命名为lena.jgp
输入./test1
运行
三、使用opencv打开摄像头
新建一个 test2.cpp 文件,输入以下代码
#include<opencv2/opencv.hpp>
using namespace cv;int main()
{//从摄像头读取视频VideoCapture capture(0);//循环显示每一帧while (1){Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧imshow("读取视频帧", frame);//显示当前帧waitKey(30);//延时30ms}system("pause");return 0;
}
查看虚拟机是否连接了摄像头,看右下方的摄像头是否点亮
没有,则进行如下操作,点击 “虚拟机 —> 设置 —> USB 控制器 —> 选择 USB3.0”(一般情况都是选择 “USB3.0”)
然后右键红圈中的摄像头打开
编译运行 test2.cpp
g++ test2.cpp -o test2 `pkg-config --cflags --libs opencv`
./test2
四、使用opencv打开一个视频文件
新建一个 test3.cpp 文件,输入以下代码
#include<opencv2/opencv.hpp>
using namespace cv;int main()
{//从摄像头读取视频VideoCapture capture("/home/helloworld/25.mp4");//循环显示每一帧while (1){Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧imshow("读取视频帧", frame);//显示当前帧waitKey(30);//延时30ms}system("pause");return 0;
}
编译运行test3.cpp
g++ test3.cpp -o test3 `pkg-config --cflags --libs opencv`
./test3
五、通过摄像头采集图像
创建test4.cpp,输入如下代码
/*********************************************************************
打开电脑摄像头,空格控制视频录制,ESC退出并保存视频 video.mp4
*********************************************************************/
#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
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<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("video.mp4", 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();return 0;
}
编译运行
g++ test4.cpp -o test4 `pkg-config --cflags --libs opencv`
./test4
ubuntu下opencv图像编程相关推荐
- OpenCV在Ubuntu下的图像编程
文章目录 一.如何在Ubuntu下安装opencv 二.使用opencv打开一张图片 三.使用opencv打开摄像头 四.使用opencv打开一个视频文件 五.通过摄像头采集图像并压缩成视频 六.参考
- GCC编译器与OpenCV图像编程
GCC编译器与OpenCV图像编程 一.可执行程序的组装过程 (一)用 gcc 生成 .a 静态库和 .so 动态库 1.编辑得到举例的程序:hello.h.hello.c和main.c 2.将hel ...
- Ubuntu下opencv的安装使用
目录 一.Ubuntu下安装opencv 二.Ubuntu下opencv摄像头的使用 1.打开摄像头显示处理视频的程序 2.改进 三.总结 一.Ubuntu下安装opencv 1.下载oencv 在u ...
- ubuntu下搭建erlang编程环境
ubuntu下搭建erlang编程环境 吐槽:erlang作为一门小众语言,编程环境配置的我发疯啊,官方标配是emacs,但是我作为中毒已深的vimer实在不想换编辑器了,在尝试的途中我还试过了用ec ...
- 【嵌入式05】Ubuntu下opencv新手操作:(打开图片及视频)
每一个程序背后都站着一堆优秀的代码库. 通过学习opencv图像库编程,了解如何借助第三方库函数完成一个综合程序设计. 一.关于opencv的安装 二.编写一个打开图片进行特效显示的代码 1.撰写代码 ...
- Ubuntu下OpenCV的安装及使用示例
文章目录 一. 认识OpenCV 二. 安装OpenCV (1)OpenCV安装包 (2)解压安装包 (3)使用cmake安装opencv (4)使用make创建编译 (5)安装 (6)配置环境 三. ...
- gcc编译器的使用操作及opencv图像编程
目录 一.gcc 生成 .a 静态库和 .so 动态库 1.创建作业目录 2.用vim编写hello.h.hello.c和main.c文件 3.将 hello.c 编译成.o 文件 4.由.o文件创建 ...
- opencv图像编程
文章目录 一.安装opencv 二.使用opencv进行图像编程 三. 打开摄像头显示处理视频 一.安装opencv 1.1 官网地址 点击上面进入官网 下载source 1.2 将刚刚下载的复制到u ...
- Ubuntu下Opencv的安装与使用
目录 一.Ubuntu中安装opencv 二.使用示例--图片 1.源代码 2.编译 三.使用示例--视频 1.虚拟机获取摄像头权限 2.播放视频 3.录制视频 4.问题 四.小结 五.参考文献 一. ...
最新文章
- Linux下的C#连接Mysql数据库
- plot、bar、stem、area函数绘图
- c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇
- 软件测试也需要推广?!
- Maven阿里云与本地仓库配置
- 点击button标签会导致提交form
- 【转】Fiddler抓包教程
- 开课吧课堂:Kubernetes集群环境常见问题解决
- oracle ash dump 导出,Oracle 导出 ASH的dump信息
- buuctf-变异凯撒
- 拉普拉斯变换和Z变换
- 手摸手教你搭个脚手架
- 蓝兔子现在有一个字符串,如果一个字符串从左向右看和从右向左看是一样的,则称为回文串。请编写程序,帮助蓝兔子判断输入的字符串是否是回文串。
- 百度快照出问题投诉有没有用?
- 常用无损压缩算法原理简析
- 应该来说没有什么太大的关系。因为计算精度既取决于你的级数的项
- 忍者必须死3系统拆解+测评
- MFC画带箭头的直线
- Maven - 客户端 Nexus 配置
- 面试官:MySQL索引为什么要用B+树实现?