一.使用代码打开一张图片

代码如下:

#include <opencv.hpp>int main() {cv::Mat img = cv::imread("D://My Code/Test_OpenCV/test_2/test1.jpg");if (img.empty()) {return -1;}// 实现一个名称赋予窗口, 第二个参数,打开的新窗口会自动适应图片的大小cv::namedWindow("Example1", cv::WINDOW_AUTOSIZE);// 只要Mat对象中拥有一个图像结构,都可以通过imshow函数进行显示cv::imshow("Example1", img);// 告诉体统暂停并且等待键盘事件// 如果参数大于0,它会等待等同于该参数的毫秒时间,然后继续执行程序// 如果该参数被设置为0或者一个负数,程序将会无限等待直到有键按下cv::waitKey(0);// 让窗口自动销毁,关闭窗口并且释放掉相关联的内存空间cv::destroyWindow("Example1");return 0;
}

二.使用OpenCV打开一个视频

代码如下:

#include <opencv.hpp>int main() {cv::namedWindow("ExampleVideo", cv::WINDOW_AUTOSIZE);// 视频读取结构cv::VideoCapture cap;// 打开文件, 视频读取结构通过一个绝对路径的字符串打开视频文件cap.open("D://My Code/Test_OpenCV/test_2/test_video.mp4");// 保存视频帧的结构cv::Mat frame;while (1) {cap >> frame;if (frame.empty()) {break;}cv::imshow("ExampleVideo", frame);// 一旦显示了这帧图片,会等到33毫秒// 如果用户在这段时间内键盘有任何输入,则退出循环,反之则跳过并执行下一个循环if (cv::waitKey(33) >= 0) {break;}}return 0;
}

如图:

三.打开一个视频,并添加进度条

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>using namespace std;// 定义全局变量存储滑动条的位置
int g_slider_position = 0;
int g_run = 1, g_dontest = 0;
// 回调函数需要访问帧结构读取g_cap
cv::VideoCapture g_cap;// pos表示当前的位置
void onTrackbarSlide(int pos, void*) {// 使进度条移到新的位置// 第一个参数表示想要帧集合的读取位置g_cap.set(cv::CAP_PROP_POS_FRAMES, pos);// 判断程序是否进入单步模式if (!g_dontest) {g_run = 1;}g_dontest = 0;
}int main() {cv::namedWindow("暴风影音", cv::WINDOW_AUTOSIZE);g_cap.open("D://My Code/Test_OpenCV/test_2/test_video.mp4");// 打开视频之后,用g_cap.get()确定总帧数以及视频的高和宽int frames = (int)g_cap.get(cv::CAP_PROP_FRAME_COUNT);int tmpw = (int)g_cap.get(cv::CAP_PROP_FRAME_WIDTH);int tmph = (int)g_cap.get(cv::CAP_PROP_FRAME_HEIGHT);cout << "Videos has " << frames << " frames of dimensions( " << tmpw << " ," << tmph << " )" << endl;// 创建一个滑动条cv::createTrackbar("播放进度", "暴风影音", &g_slider_position, frames, onTrackbarSlide);cv::Mat frame;while (1) {if (g_run != 0) {g_cap >> frame;if (frame.empty()) {break;}int cur_pos = (int)g_cap.get(cv::CAP_PROP_POS_FRAMES);g_dontest = 1;cv::setTrackbarPos("播放进度", "暴风影音", cur_pos);cv::imshow("暴风影音", frame);// 让视频正常播放g_run -= 1;}char c = (char)cv::waitKey(10);if (c == 's') {g_run = 1;cout << "Single step, run = " << g_run << endl;} if (c == 'r') {g_run = -1;cout << "Run Mode, run = " << g_run << endl;}if (c == 27) {break;}}return 0;
}

如图:

1.createTrackbar函数

openCV提供createTrackbar指定图像窗口创建一个指定名称和范围的滑动条,使用户能够滑动调整输入,然后根据输入值执行程序。还提供了getTrackbarPos和setTrackbarPos以获取和修改bar的当前值。

CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,int* value, int count,TrackbarCallback onChange = 0,void* userdata = 0);
  • trackbarname:滑动空间的名称
  • winname:滑动空间用于依附的图像窗口的名称
  • value:初始化阈值
  • count:滑动控件的刻度范围
  • TrackbarCallback是回调函数, 函数定义如下:
typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);

2.setTrackbarPos函数

void setTrackbarPos(const String& trackbarname, const String& winname, int pos)
  • trackbarname:滑动条名称
  • winname:窗口名称
  • pos:新位置

3.getTrackbarPos函数(代码中未使用)

int getTrackbarPos(const String& trackbarname, const String& winname)
  • trackbarname:滑动条名称
  • winname:窗口名称

注:我的代码在vs2017下跑的,配置了OpenCV4.0

【OpenCV学习】使用OpenCV打开图片视频相关推荐

  1. 使用Python调用opencv学习(-)打开图片,显示图片

    使用Python调用opencv学习(-)打开图片,显示图片 第一步是读取图片是用cv2.imread 第一个参数是图片的路径可以是绝对路径也可以是相对路径.第二个参数代表读取图片的格式 cv2.IM ...

  2. Ubuntu下使用opencv打开图片视频

    Ubuntu下使用opencv打开图片视频 一.安装opencv 二.配置环境 1.安装完成后,开始配置环境 2.更新系统共享链接库 3.修改bash.bashrc 文件 4.完成后执行命令 三.打开 ...

  3. OpenCV学习-P34-P38 Opencv边缘检测

    OpenCV学习-P34-P37 Opencv边缘检测 Sobel检测算子 Laplacian检测算子 Canny边缘检测算法 边缘检测总结 边缘检测分为两类:基于搜索和基于零穿越 基于搜索:寻找图像 ...

  4. OpenCV学习-P29-P32 Opencv直方图均衡化、掩膜

    OpenCV学习-P29-P32 Opencv直方图均衡化及掩膜 1 直方图 2 直方图均衡化 3 直方图自适应均衡化 1 直方图 直方图原理:统计图像各个灰度区间的像素数 cv2.calcHist( ...

  5. python opencv显示图片动态_opencv-python计算机视觉图像处理学习笔记2——打开图片,保存图片,显示图片...

    用到的函数:imread(读取).imwrite(保存)和imshow(显示) 1.打开VS code,如图 2.左上角新建文件,出现Untitled-1,输入代码: import cv2       ...

  6. opencv学习笔记1:图片读入,显示与保存(有代码)

    读入图像 cv2.imread(filepath,flags) 说明: filepath文件名 图片路径. 如原始路径为: D:\lesson\2345_image_file_copy_15.jpg ...

  7. #彻底解决# opencv imdecode函数中打开图片,图片变色的问题

    大部分人使用imdecode函数打开图像文件是因为 opencv中的imread函数无法打开中文估路径下的图像文件,网上使用imdecode函数打开图片的语法有很多这里简单列举一些: 方法一: def ...

  8. Opencv学习笔记——opencv配置安装与IDE环境安装

    文章目录 前言 一.opencv配置安装 二.IDE的安装 总结 前言 既然开始对AI视觉这个方面有兴趣,也初步接触了一些AI视觉在嵌入式方面的应用,那自然少不了对Opencv的学习.到现在开始学习o ...

  9. OpenCV学习——绘制OpenCV徽标

    今天看到一个关于OpenCV的练习题,用绘图功能创建OpenCV的徽标. 关于OpenCV的绘图功能,在下面这篇笔记里写过了,这里不再多写,直接上代码!OpenCV学习--绘图功能_笨小古的博客-CS ...

最新文章

  1. P4719 【模板】动态dp
  2. Python pass 语句
  3. Linux内核--内核地址空间分布和进程地址空间
  4. map容器中删除一个元素(value)
  5. Spring Cloud 配置中心中的native配置
  6. CUDNN下载速度慢解决方法
  7. 编译原理-回溯法及其优化的思考
  8. 兼容IE8的多文件上传实现
  9. 迅雷html什么意思,迅雷达到高速状态是什么意思?带图
  10. 6轴串联关节机器人的奇异点
  11. 关于正月十六工作室更换新LOGO的通知
  12. 常见电脑硬件故障有哪些?如何解决?~~~显卡故障
  13. 网页基础知识思维导图
  14. 个人电脑厂商艰难涉水家庭娱乐市场
  15. mbedtls 入门第四课--移植mbedtls到VS和ESP8266--8266SDK SHA256移植
  16. 白硕:背靠背知识协同——区块链与人工智能结合的新途径
  17. 究竟什么是CLR(翻译自维基百科)
  18. 不忘初心,智和网管平台在国产化的道路上砥砺前行
  19. tableau自定义地理编码
  20. JS判断字符串相等的问题

热门文章

  1. wxpython基本控件
  2. 2021山丹一中高考成绩查询,2019年张掖中考分数线,张掖中考录取分数线(出炉)
  3. 播放器android版最新官方版下载安装,万能播放器安卓版下载
  4. 数据开发岗面试绝地求生
  5. 电脑上的文件如何备份到服务器,教您电脑文件备份怎么弄
  6. java 横版游戏开发_用MyEclipse的Java Project开发仿DNF横版格斗游戏
  7. 【软件工程】一文完全理解用例和用例图
  8. python在家创业项目_适合在家创业的项目有哪些 八大项目人人可做
  9. 首席新媒体运营教程:电商UGC社区运营全攻略电商
  10. html上上上级目录,html如何表示上级目录