栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

吃饱没事做之——将视频提取出边框,然后再生成视频

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

吃饱没事做之——将视频提取出边框,然后再生成视频

看了一个B站的视频之后,那是将视频的边框提取出来之后,对其进行再生成视频文件。

然后就在想,用opencv实现好像很简单,然后在网上查略资料之后,对其进行打代码

贴代码,注释都在上面了。

#include "opencv2/opencv.hpp"
#include 
#include "opencv2/highgui/highgui.hpp"


using namespace std;
using namespace cv;

Mat picture_cl(Mat& image);
void v_i_v(string video,string path);

int main( int argc, char** argv )
{
    v_i_v(argv[1],argv[2]);
	waitKey(0);
    return 0;
}



void picture_c(string argv,string path,int num)
{
    Mat image;
    char temp_file [10];
    vector> contours;
    vector hierarchy;
    string filename;

    image = imread( argv, 1 );
    cv::resize(image,image,cv::Size(0,0), 0.7, 0.7);

    cvtColor(image, image, cv::COLOR_RGB2GRAY);
    Canny(image, image, 60, 90, 3, false);

    sprintf(temp_file,"%06d",num);
    filename = temp_file;
    filename = path+filename+".jpg"; 
    imwrite(filename,image);
}




Mat picture_cl(Mat& image)
{

    cv::resize(image,image,cv::Size(0,0), 0.7, 0.7);
    cvtColor(image, image, cv::COLOR_RGB2GRAY);
    Canny(image, image, 70, 90, 3, false);
    return image;  
}



void v_i_v(string video,string path)
{
    Mat frame;
	int num=1;
	string filename;
	char  temp_file[10];

    VideoCapture capture(video);
	if(!capture.isOpened())
	{
		cerr<<"Failed to open a video"<>frame;
    if(!frame.empty())
        picture_cl(frame);
    

    int fourcc    = VideoWriter::fourcc('D','I','V','X'); //编解码类型
	double fps    = capture.get(CAP_PROP_FPS);  //每秒的帧数
	bool iscolor  = true;
	cv::Size size(frame.cols,frame.rows);
	//int frameWidth = frame.cols; //帧宽度
	//int frameHeight= frame.rows; //帧高度
	VideoWriter Writer;
	
	Writer = VideoWriter(path,fourcc,fps,size,false);
    
	cout << size << endl;

	Writer.write(frame);`在这里插入代码片`
 
	for(;;)
	{
		capture>>frame;
		if(frame.empty())
			break;
        picture_cl(frame);
		Writer.write(frame);
	}
	capture.release();
    Writer.release();
}

CMakeList.txt

cmake_minimum_required(VERSION 3.5)

# 项目名称
PROJECT(main)

# 二进制文件
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY)

# 引入 OpenCV 包
find_package(OpenCV REQUIRED)

# 头文件
include_directories(${OpenCV_INCLUDE_DIRS})


message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

# 可执行文件和源文件
add_executable(main main.cpp)

# 库文件
link_directories(${OpenCV_LIBRARY_DIRS})
target_link_libraries(main ${OpenCV_LIBS})

之后这里是:样例视频 https://www.bilibili.com/video/BV1D3411M7Ef/?vd_source=b8f5fd5fbdb3be90a6b34af2481290e3

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976740.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号