展开

关键词

C++ OpenCV使用VideoWriter写入视频

目标 我们是把上面这个图像写入到我们播放的视频里,比如在播放视频的第15帧,第30帧,第50帧,第65帧,都写入我们这个图像,然后播放出来看看。 视频效果 ? 通过VideoCapture加载视频获取到视频的FPS及宽和高 把我们的图像缩放至上一步获取到的宽和高大小 创建VideoWriter对象 播放VideoCapture加载的视频,获取到的每一帧都写入到 代码编写 新建一个项目opencv-1003,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ---- 1.加载我们的图片为Mat图像 ? ---- 2.通过VideoCapture加载视频获取到视频的FPS及宽和高,并计算出两帧相隔的时间 ? ---- 3.把我们的图像缩放至上一步获取到的宽和高大小 ? ---- 接下来我们运行起来就是上面视频的效果了。 -END-

6.9K40

C++ OpenCV实现视频播放位置跳转

前面我们学习了OpenCV通过VideoCapture类进行视频播放,并且加入了随机的播放时间一些小的知识。今天我们在视频播放的基础上实现播放位置的跳转。 我们这次采用的视频素材就是马上要在我的家乡青岛举行的上合峰会里面介绍青岛的视频素材《倾倒世界》。 先上视频 ? 相关API 这里面实现视频跳转的API我们在上篇里面随机播放已经用到过了,就是 video.set(CV_CAP_PROP_POS_FRAMES, 0); ---- 实现原理 加载视频 获取总视频的帧率 通过每一帧读取播放视频,判断当前帧大于设置的相关帧数后重新设置播放帧为0(即开头) 释放资源 ---- 代码 新建一个项目opencv-1002,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入 1.加载视频 ? 2.获取总视频的帧率,用于设置两帧间的相隔时间。 ? 3.通过每一帧读取播放视频,判断当前帧大于设置的相关帧数后重新设置播放帧为0(即开头) ? ? 4.释放资源 ?

84840
  • 广告
    关闭

    9.9元体验视频云点播

    云点播为您提供媒资管理+短视频SDK+小程序插件+超级播放器等丰富的产品能力,快速构建长短视频一体化方案,9.9元体验一站式视频上传、转码、AI、及分发播放服务,还免费赠送基础版短视频License SDK 28天使用权

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++ OpenCV视频操作之CamShift跟踪算法

    前言 CamShift算法,全称是 Continuously AdaptiveMeanShift,顾名思义,它是对Mean Shift 算法的改进,能够自动调节搜索窗口大小来适应目标的大小,可以跟踪视频中尺寸变化的目标 CamShift基本思想是以视频图像中运动物体的颜色信息作为特征,对输入图像的每一帧分别作 Mean-Shift 运算,并将上一帧的目标中心和搜索窗口大小(核函数带宽)作为下一帧 Mean shift 第二步:求出视频中有关物体的反向投影图。 第三步:根据反向投影图和输入的方框进行meanshift迭代,由于它是向重心移动,即向反向投影图中概率大的地方移动,所以始终会移动到目标上。 代码演示 我们再新建一个项目名为opencv--videocamshift,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? 完整代码如下: #include <opencv2/opencv.hpp> #include <iostream> cv::Mat frame, gray; //源图像和源灰度图像 cv::Mat framecopy

    1.8K10

    C++ OpenCV视频操作之图像输出文字

    前言 当我们视频分析时可能图像中需要有一个文字说明,OpenCV中本身也有这个API,我们就来看看OpenCV中的图像文字输出。 视频效果 函数API void putText( Mat& img, const string& text, Point org, int fontFace,double fontScale, Scalar int thickness:字体粗细,我们下面代码使用的是4号 int lineType:线型,我们使用默认值8. ---- 代码演示 这次我们用的还是最开始我们用的背景消除建模的那个DEMO《C++ OpenCV视频操作之背景消除建模(BSM)-1》,在这个基础上我们加入文字输出,看看效果。 完整代码 #include <iostream> #include <opencv2/opencv.hpp> int main(int agrc, char** argv) { cv::VideoCapture

    2.7K20

    C++ OpenCV绘制形状和文字(附随机画线视频)

    新建项目 新建一个项目opencv-0007,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.并加载我们常用的那个图片显示出来 ? 下面这个是随机画线的视频: ? -END-

    1.2K30

    C++ OpenCV播放视频及调用摄像头显示

    前一篇我们介绍了 《C++ OpenCV摄像头及视频操作类VideoCapture介绍》,我们现在就针对这个类里的API进行DEMO的演示。 先上干货 下面是我们这个DEMO的演示视频: ? 代码演示 新建一个项目opencv-1001,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ? 整个DEMO的操作流程为 加载视频 获取视频的总帧数 随机生成本次播放的开始帧数和结束帧数 获取帧率,生成两帧的间隔时间 播放视频,播放过程中加入当前帧数的显示及按键控制暂停或退出 关闭释放视频资源 - --- 1.加载视频 ? 设置当按下ESC键时直接退出播放视频,当前播放帧数大于结束帧数就直接提示视频播放完毕。 ? 设置按下任意键暂停播放视频,当再按任意键时再继续播放视频。然后当前帧数再加1。

    1.5K40

    C++ OpenCV视频操作之稠密光流对象跟踪

    视频效果 https://v.qq.com/x/page/v1359hi8z71.html
    看过稀疏光流的视频的人,再对比上面的视频可以看出来明显稠密光流跟踪的速度要慢不少,视频的播放都看出卡顿的感觉 主要包括OPTFLOW_USE_INITIAL_FLOW和OPTFLOW_FARNEBACK_GAUSSIAN 代码实现 我们再新建一个项目名为opencv--video4,按照配置属性(VS2017配置 OpenCV通用属性),然后在源文件写入#include和main方法 ? 这样整个就完成了,文章开头的视频就是我们运行起来的效果,下面是视频中的截图 ? -END-

    1.2K30

    C++ OpenCV视频操作之背景消除建模(BSM)-1

    前言 前面我有几章是专门设置怎么读取视频操作的文章《C++ OpenCV播放视频及调用摄像头显示》,最近学完了一些形态学的基础操作及特征提取后,我们开始重新学习视频一操作,今天我们先来研究一下背景消除建模 K个最近邻) 相关API BackgroundSubtractor BackgroundSubtractorMOG2 BackgroundSubtractorKNN 代码演示 我们再新建一个项目名为opencv --video1,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? 我们直接加载了一个本地的视频 ,下面这个就是本地加载的原视频,从视频中可以看出我的镜头是没动了,然后手就出来了。 接下来我们看看整个视频的运行效果: 注:如果我们录的镜头在不停的移动的话,这个背景检测效果就基本作用不大了,所以这个还是要求必须是固定的镜头效果,才能检测的比较准确,应该后面的学习中会有比较不错的解决方案

    41520

    C++ OpenCV视频操作之背景消除建模(BSM)-2

    前言 上一篇《C++ OpenCV视频操作之背景消除建模(BSM)-1》中我们学习了背景消除建模(BSM)中的采用图像分割模式的高斯混合模型,介绍中我们还说过BS算法中除了图像分割还有机器学习的方式,本篇文章我们就接着上节的内容来学习一下机器学习算法的背景消除建模 我们直接看一下运行的视频,看看有没有什么不同之处。 看完上面的视频不知道大家有没有看出有什么不同呢? 其实后面的都差不大多,只有在刚开始播放的前几帧时我们能看出来问题了,我把前几帧截一下图。 ? ? 上面两张图是视频的第4秒和视频的第5秒,从第4秒(第一张图)的图我们可以看出左边红框的KNN是我们的机器学习背景建模,右边红框是原来高斯混合模型的背景消除建模,KNN由于是机器学习,所以前几帧的时候需要自己根据图像在适应训练 ,找到符合的背景后,然后就会自动消除背景,所以视频的第5秒(第二张图)KNN的框已经完全变成黑色的了,而利用高斯混合模型进行图像分割时,从第一张图上就已经进行背景的分割了。

    57630

    OpenCV 读写视频

    OpenCV视频前首先需要创建VideoCapture对象: import cv2 import numpy as np videoCapture = cv2.VideoCapture("girl.mp4 ") # 创建VideoCapture对象,用于读取视频 接着获取视频的一些基本信息: fps = videoCapture.get(cv2.CAP_PROP_FPS)#获取帧率(每秒播放几张图像) # videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))) fNUMS = videoCapture.get(cv2.CAP_PROP_FRAME_COUNT) #获取帧数 若是写视频 : newSize = (300,650) # 自己设定的缩放后的图像宽高 最后,循环读入每一帧,显示在屏幕上,并写入进新的视频文件: success, frame = videoCapture.read strokeEdges #自定义的边缘检测函数(之前有介绍) videoCapture = cv2.VideoCapture("girl.mp4") # 创建VideoCapture对象,用于读取视频

    1.2K40

    opencv 捕获视频

    27310

    C++ OpenCV基于颜色分割实现源视频上物体追踪

    前言 上一篇中我们学习了《C++ OpenCV使用InRange对HSV颜色进行分割》,本身通过视频中可以看到我们通过颜色把按摩器提取了出来,这次我们基于上一章的成果,在上面实现原视频中的物体标识出来, 实现效果视频 https://v.qq.com/x/page/a13585r8ph8.html 实现思路 对源视频用InRange进行颜色分割 对分割出来的图像进行形态学操作(开操作去燥) 然后再进行N 闪的膨胀(N为整数,需要自己把握) 对膨胀后的形态进行查找轮廓 生成轮廓的外接矩形 在源图上把外接矩形绘制出来 代码实现 我们还是用上次的那个项目opencv--video2,按照配置属性(VS2017 配置OpenCV通用属性),然后在原来的基础上增加一个矩形的定义,如下图红框所示: ? 这样整个效果就完成了,生成的结果就是文章开始时的视频显示效果,下面是视频中的截图 ? -END-

    88920

    C++ OpenCV摄像头及视频操作类​VideoCapture介绍

    前言 前面的文章我们做了对图片的一些处理,OpenCV里面还有对动态视频的处理,通过动态视频图像每一帧生成的Mat再对图像可以进行处理。 接下来我们学习一下OpenCV打开摄像头和播放视频的基本操作。 VideoCapture类 opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API。 通过对VideoCapture类的构造函数和open函数分析,可以发现opencv读入视频的方法一般有如下两种。比如读取当前目录下名为"dog.avi"的视频文件,那么这两种写法分别如下。 (细节请参考opencv文档说明) ---- 6.VideoCapture::retrieve bool VideoCapture::retrieve(Mat& image, int channel=0 ); 功能:解码并且返回刚刚抓取的视频帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。

    2.9K30

    YOLOv4 | 用C++OpenCV 实现视频目标检测

    这里就一步步来教一下大家如何用C++OpenCV 实现视频目标检测(YOLOv4模型)。 1. 实现思路 读取视频流,载入模型,执行推理,找出所有目标及其位置,最后绘制检测结果。 2. 实现步骤 读取摄像头视频流或本地视频文件: cv::VideoCapture cap; cap.open(0); //打开摄像头 //cap.open("TH1.mp4"); //读取视频文件 载入模型 ▼ 本文内容来自国防科大副教授朱斌撰写的新书《OpenCV 4机器学习算法原理与编程实战》。 ? ▊《OpenCV 4机器学习算法原理与编程实战》 朱斌 著 注重理论结合实战 兼顾经典与前沿算法 应用案例翔实 学习路线清晰 本书主要面向OpenCV领域的研究与开发人员,采用原理结合实战的方式,介绍 OpenCV 4的机器学习算法模块与深度神经网络模块中的核心算法原理与C++编程实战。

    1.5K20

    C++ OpenCV轮廓发现

    OpenCV中,轮廓是由STL风格的vector<>模板对象表示的,其中vector中的每个元素都编码了曲线上,下一点的位置信息。 先上干货 Demo视频显示效果 ? int maxLevel = INT_MAX, // 轮廓中的最大下降 Point offset = Point() // (可选) 所有点的偏移 ) 代码演示 新建一个项目opencv -0023,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ?

    1K20

    C++ OpenCV模版匹配

    CV_TM_SQDIFF_NORMED归一化平方差匹配法 CV_TM_CCORR_NORMED归一化相关匹配法 CV_TM_CCOEFF_NORMED归一化相关系数匹配法 代码演示 新建一个项目opencv -0022,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ?

    96820

    C++ OpenCV像素操作

    关于OpenCV像素操作,我们在VS2017里面新建项目pixeldemo,然后导入配置好属性环境(配置属性环境看VS2017配置Opencv通用属性文章) 开始编码 在源文件里新建项起名为main ? 然后自己在上面引入iostream和opencv的头文件,写入main方法 ---- ? ---- 加载显示图片 要做像素的操作我们首先要加载一张图片进来并显示出来,所以我们先写加载的代码 ? ?

    1.1K20

    C++ OpenCV输出中文

    前言 以前的文章《C++ OpenCV视频操作之图像输出文字》介绍了OpenCV中的putText函数可以输出文字,但是这个函数只能输出英文,如果输入的是中文会变为乱码,今天我们就来实现OpenCV输出中文 pragma once #ifndef PUTTEXT_H_ #define PUTTEXT_H_ #include <Windows.h> #include <string> #include <opencv2 /opencv.hpp> using namespace cv; class putText { private: static void GetStringSize(HDC hdc, const 40, rect.y-23), Scalar(0, 0, 255), 20, "微软雅黑"); 代码演示 微卡智享 新建一个opencvputtextzh的项目,配置参见《VS2017配置OpenCV main.cpp #include <iostream> #include <opencv2/opencv.hpp> #include "putText.h" using namespace std;

    1.9K20

    C++ OpenCV直方图比较

    OpenCV 提供了四种比较方法: Correlation 相关性比较 Chi-Square 卡方比较 Intersection 十字交叉比较 Bhattacharyya 代码 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream>

    42320

    C++ OpenCV直方图计算

    代码演示 新建一个项目opencv-0020,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ? 直方图计算的代码 ? ? ? ? ?

    1.3K20

    相关产品

    • 安全专家服务

      安全专家服务

      专家服务(ES)由腾讯云专业的安全专家团队提供安全咨询、网站渗透测试、应急响应、等保合规等服务,帮助用户在上云过程获得合适的安全解决方案、发现潜在安全威胁和提升用户的安全防护能力……

    相关资讯

    热门标签

    扫码关注腾讯云开发者

    领取腾讯云代金券