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图像编程相关推荐

  1. OpenCV在Ubuntu下的图像编程

    文章目录 一.如何在Ubuntu下安装opencv 二.使用opencv打开一张图片 三.使用opencv打开摄像头 四.使用opencv打开一个视频文件 五.通过摄像头采集图像并压缩成视频 六.参考

  2. GCC编译器与OpenCV图像编程

    GCC编译器与OpenCV图像编程 一.可执行程序的组装过程 (一)用 gcc 生成 .a 静态库和 .so 动态库 1.编辑得到举例的程序:hello.h.hello.c和main.c 2.将hel ...

  3. Ubuntu下opencv的安装使用

    目录 一.Ubuntu下安装opencv 二.Ubuntu下opencv摄像头的使用 1.打开摄像头显示处理视频的程序 2.改进 三.总结 一.Ubuntu下安装opencv 1.下载oencv 在u ...

  4. ubuntu下搭建erlang编程环境

    ubuntu下搭建erlang编程环境 吐槽:erlang作为一门小众语言,编程环境配置的我发疯啊,官方标配是emacs,但是我作为中毒已深的vimer实在不想换编辑器了,在尝试的途中我还试过了用ec ...

  5. 【嵌入式05】Ubuntu下opencv新手操作:(打开图片及视频)

    每一个程序背后都站着一堆优秀的代码库. 通过学习opencv图像库编程,了解如何借助第三方库函数完成一个综合程序设计. 一.关于opencv的安装 二.编写一个打开图片进行特效显示的代码 1.撰写代码 ...

  6. Ubuntu下OpenCV的安装及使用示例

    文章目录 一. 认识OpenCV 二. 安装OpenCV (1)OpenCV安装包 (2)解压安装包 (3)使用cmake安装opencv (4)使用make创建编译 (5)安装 (6)配置环境 三. ...

  7. gcc编译器的使用操作及opencv图像编程

    目录 一.gcc 生成 .a 静态库和 .so 动态库 1.创建作业目录 2.用vim编写hello.h.hello.c和main.c文件 3.将 hello.c 编译成.o 文件 4.由.o文件创建 ...

  8. opencv图像编程

    文章目录 一.安装opencv 二.使用opencv进行图像编程 三. 打开摄像头显示处理视频 一.安装opencv 1.1 官网地址 点击上面进入官网 下载source 1.2 将刚刚下载的复制到u ...

  9. Ubuntu下Opencv的安装与使用

    目录 一.Ubuntu中安装opencv 二.使用示例--图片 1.源代码 2.编译 三.使用示例--视频 1.虚拟机获取摄像头权限 2.播放视频 3.录制视频 4.问题 四.小结 五.参考文献 一. ...

最新文章

  1. Linux下的C#连接Mysql数据库
  2. plot、bar、stem、area函数绘图
  3. c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇
  4. 软件测试也需要推广?!
  5. Maven阿里云与本地仓库配置
  6. 点击button标签会导致提交form
  7. 【转】Fiddler抓包教程
  8. 开课吧课堂:Kubernetes集群环境常见问题解决
  9. oracle ash dump 导出,Oracle 导出 ASH的dump信息
  10. buuctf-变异凯撒
  11. 拉普拉斯变换和Z变换
  12. 手摸手教你搭个脚手架
  13. 蓝兔子现在有一个字符串,如果一个字符串从左向右看和从右向左看是一样的,则称为回文串。请编写程序,帮助蓝兔子判断输入的字符串是否是回文串。
  14. 百度快照出问题投诉有没有用?
  15. 常用无损压缩算法原理简析
  16. 应该来说没有什么太大的关系。因为计算精度既取决于你的级数的项
  17. 忍者必须死3系统拆解+测评
  18. MFC画带箭头的直线
  19. Maven - 客户端 Nexus 配置
  20. 面试官:MySQL索引为什么要用B+树实现?

热门文章

  1. 微信小程序接入物流快递查询的接口API步骤
  2. ​用互联网思维看待大数据
  3. Oracle使用delete删除部分表数据后,如何释放表空间??
  4. 自动化测试工具——Selenium详解
  5. css+js模拟用户 注册和登录页面
  6. 程序员干货:从写简历,到面试、谈薪酬的那些技巧和防坑指南!
  7. webrtc janus服务器调试工具 admin api 详解(一)
  8. DeFi收益来源全面概述
  9. java 编写的mp3 2
  10. js--《js延时加载有哪些方式》