如何使用emgucv_基礎技巧_L2_如何撥放錄製好的影片(codeblock+emgucv)
先看這次的目標
我們要在 WindwosForm 視窗應用程式 中 實現 影片撥放的功能
借助 於 emgucv 的 函式庫
可以實現的了喔
首先 我事先 在 codeblock 中 撰寫了 錄製 影片的 程式碼 來錄製一段 avi 影片
效果
按下 c 停止錄製
接著去 撰寫 emgucv 的 撥放影片功能
視窗佈局
首先 宣告 兩個變數
一個用來乘載 video 的 frame
一個用來開啟視訊或讀影片用的
指定影片路徑 和 抓取影格
最簡潔俐落的讀影片emgucv code
效果 如下
我們要在 WindwosForm 視窗應用程式 中 實現 影片撥放的功能
借助 於 emgucv 的 函式庫
可以實現的了喔
首先 我事先 在 codeblock 中 撰寫了 錄製 影片的 程式碼 來錄製一段 avi 影片
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <stdio.h>
#include <iostream>
int main()
{
CvCapture *capture;
IplImage *frame;
capture=cvCreateCameraCapture(0);
cvNamedWindow("webcam_open",0);
CvVideoWriter *writer;
char FileAviName[]="record.avi";
int Foramt_Avi = -1;
int FPS = 30;
CvSize AviSize = cvSize(640,480);
int AviColor = 1;
writer=cvCreateVideoWriter(FileAviName,Foramt_Avi,FPS,AviSize,AviColor);
int i=0 ;
while(true)
{
frame = cvQueryFrame(capture);
cvWriteFrame(writer,frame);///將frame寫入writer資料結構
///cvWriteFrame(writer資料結構,frame資料結構);
cvShowImage("webcam_open",frame);
printf("%d\n",i);
int key = cvWaitKey(33);
if(key=='c')
break;
/*
if(key = cvWaitKey(20)>0)
break;
*/
i++;
}
cvReleaseCapture(&capture);
cvReleaseVideoWriter(&writer);
cvDestroyWindow("Webcam");
}
效果
按下 c 停止錄製
接著去 撰寫 emgucv 的 撥放影片功能
視窗佈局
首先 宣告 兩個變數
一個用來乘載 video 的 frame
一個用來開啟視訊或讀影片用的
指定影片路徑 和 抓取影格
最簡潔俐落的讀影片emgucv code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
namespace Emgucv_ex_hand_gesture_recognition
{
public partial class Form1 : Form
{
Image<Bgr, Byte> currentFrame;
Capture grabber;
public Form1()
{
InitializeComponent();
grabber = new Emgu.CV.Capture("C:\\img_res\\hand.avi");
Application.Idle += new EventHandler(FrameGrabber);
}
private void FrameGrabber(object sender, EventArgs e)
{
//throw new NotImplementedException();
currentFrame = grabber.QueryFrame();
if (currentFrame != null)
{
imageBox1.Image = currentFrame;
}
}
}
}
效果 如下
留言
張貼留言