每一个程序背后都站着一堆优秀的代码库。 通过学习opencv图像库编程,了解如何借助第三方库函数完成一个综合程序设计。

  • 一、关于opencv的安装
  • 二、编写一个打开图片进行特效显示的代码
    • 1.撰写代码
    • 2. 编译文件
    • 3. 关于编译的命令
  • 三、使用opencv库编写打开摄像头压缩视频的程序
    • 1. 虚拟机获取摄像头权限
    • 2. 播放视频
  • 四、总结

环境:Ubuntu18.04 Desktop,Opencv3.x

一、关于opencv的安装

安装opencv的方法可参考博客https://blog.csdn.net/public669/article/details/99044895
https://blog.csdn.net/forever_008/article/details/103625637

安装时有几点要注意:

  1. opencv4.x与opencv3.x安装略有差别
  2. 安装成功后一定要进行检验

在终端打开到opencv-4.1.2/sample/cpp/example_cmake目录,执行下面的代码:
cmake .
make
./opencv_example
如果摄像头打开,左上角出现 Hello OpenCV 则证明安装成功

  1. Ubuntu Server服务器版不可以运行opencv,原因没有图形化支持,即便安装可进行,但最后验证时无法显示Hello OpenCV。

二、编写一个打开图片进行特效显示的代码

1.撰写代码

创建一个文件夹用于存放代码文件code,并创建一个test1.cpp文件

mkdir code
cd code
gedit test1.cpp

代码如下:
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;
}

2. 编译文件

gcc编译器:gcc + 文件名 + -o + 输出文件流名称 +` 支持包

执行以下命令:

gcc test1.cpp -o test1 `pkg-config --cflags --libs opencv`


但编译出错,原因在于需要用 C++ 编译器编译你的接口模块。需要将gcc 改为g++。

g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`

在code文件夹下准备一张图片,我在这里命名为lena.jpg

输出结果执行以下命令

./test1


code文件夹下有test.png

3. 关于编译的命令

g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`

pkg-config

  1. 检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。
  2. 获得编译预处理参数,如宏定义,头文件的位置。
  3. 获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。
  4. 自动加入所依赖的其它库的设置。

--cflags
用来指定程序编译时所需要的头文件所在目录

--lib
指定程序所需要的动态链接库目录

三、使用opencv库编写打开摄像头压缩视频的程序

1. 虚拟机获取摄像头权限

使用快捷键Win+R,输入services.msc,确定
找到VMware USB Arbitration S…

在虚拟机中设置,USB控制器兼容性设置为USB3.0。

单击右下角摄像头图标

连接

至此,图片打开成功!

2. 播放视频

创建test2.cpp

gedit test2.cpp

代码如下:

#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{//从摄像头读取视频VideoCapture capture("man.mp4");//VideoCapture capture(0);打开man.mp4视频文件//循环显示每一帧while(1){Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧if(frame.empty())//播放完毕,退出break;imshow("读取视频帧",frame);//显示当前帧waitKey(30);//掩饰30ms}system("pause");return 0;
}

注意:

  1. 如果语句:VideoCapture capture(0),后面的参数设置为 0,则从摄像头读取视频并循环显示每一帧;如果设置为一个视频的文件名,比如:man.mp4 ,则会将视频读取并循环显示每一帧。
  2. while循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像。
  3. 语句:waitKey(30) ,中的参数单位是 ms 毫秒,也就是每一帧间隔 30ms,该语句时不能删除的,否则会执行错误,无法播放视频或录制视频。

在code文件夹下放置一个视频man.mp4
编译test2.cpp文件

g++ test2.cpp -o test2 `pkg-config --cflags --libs opencv`

运行

./test2

播放man.mp4视频



至此,视频播放成功!

四、总结

在opencv的安装与卸载重装过程中,终于在第四次将opencv安装成功,在多次下载中可以知道,opencv下载流程熟悉之后并不复杂。
opencv安装没有问题之后,图片和视频的打开并不困难,按部就班去做就好了。

【嵌入式05】Ubuntu下opencv新手操作:(打开图片及视频)相关推荐

  1. ubuntu下opencv图像编程

    ubuntu下opencv的图像编程 一.ubuntu安装opencv-3.4.1 二.使用opencv打开一张图片 三.使用opencv打开摄像头 四.使用opencv打开一个视频文件 五.通过摄像 ...

  2. Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频

    目录 一.安装opencv 1.前置安装条件 2.安装环境 3.下载opencv3.4.11 4.解压安装包 5.开始安装 6.检查是否安装成功 二.显示图片和播放视频 1.显示图片 2.播放视频 三 ...

  3. Ubuntu下opencv的安装使用

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

  4. Ubuntu系统安装opencv详细操作及具体应用

    Ubuntu系统安装opencv详细操作及具体应用 前言 一.opencv是个什么东西 二.opencv的安装 1.资源准备及前期准备 2.安装编译 3.配置更改 4.验证版本 三.opencv应用 ...

  5. 用gcc生成静态库和动态库和使用opencv库编写打开摄像头压缩视频

    文章目录 一.用gcc生成静态库和动态库 1.编辑生成程序hello.h.hello.c.main.c 2.将hello.c生成.o文件 3.使用静态库 4.动态库的使用 二.a与.so库文件的生成与 ...

  6. PyCharm下利用pyqt对话框打开图片,显示

    PyCharm下利用pyqt对话框打开图片,显示 PyCharm下利用pyqt对话框打开图片显示 1安装PyCharm Python PyQt5 Pycharm配置Pyqt 1添加Qtdesigner ...

  7. Ubuntu下Opencv的安装与使用

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

  8. Ubuntu下OpenCV的安装及实例

    一.OpenCV安装 1. OpenCV 3.4.11下载地址:下载地址 选择3.4.11.zip 2.在解压缩包之前,将 opencv-3.4.11.zip 复制到 home 文件夹下,再解压缩. ...

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

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

最新文章

  1. javascript +new Date()
  2. 「Python-Bug」错误requests.exceptions.proxyerror: httpsconnectionpool解决方法
  3. OpenGL 学习 显示列表
  4. SSH应用之BBS之路-1、项目构设之数据库设计
  5. Eclipse调字体
  6. 浪潮发布OpenStack AI云平台,加速行业AI进程
  7. 大屏拍照游戏神器来袭,OPPO R11 Plus今日首销
  8. python 状态空间模型_基于状态空间的建模过程
  9. iostream头文件
  10. javaScript实现百度换肤案例
  11. Java-幸运抽奖系统(综合练习)
  12. 修复 Fontconfig Error
  13. Monyer黑客小游戏 踩坑总结
  14. 纯css按钮代码,纯CSS实现3D按钮效果实例代码
  15. windows python3.6 tensorflow1.12搭建RCNN运行环境 bug解决
  16. 王立柱《C语言程序设计》3.5.3
  17. OCP-1Z0-051 第21题 LONG类型
  18. Messari 2022年度报告9 - DAO亦有道
  19. c 语言获取系统时间并打印机,C# 获取打印机当前状态的方法
  20. [ 虚拟专用网 ] IPsce 虚拟局域网(安全的IP协议的虚拟专用网)详解(一)

热门文章

  1. 2022-10-10(通达OA SQL注入漏洞)
  2. kingcms php 下载,KingCMS 通用版_KingCMS官方网站
  3. jQuery 搜索条件联合查询 (数组条件查询)
  4. 【C Primer Plus第二章课后编程题】
  5. 服务器四通道内存性能提升,三通道和四通道的性能差距是多少
  6. 进入JavaScript
  7. FreeRTOS 任务优先级说明
  8. CCIE重认证--350-401-补充题库-也是必须的哟
  9. 开源项目eladmin--笔记
  10. 云服务器搭建开发环境