#include#include#include#include#defineNUM_FRAME5591//只處" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

OPENCV讀取AVI視頻失敗 視頻幀提取以及圖片合成

系統(tǒng) 2180 0

前一陣子,實(shí)驗(yàn)室老師個(gè)了個(gè)小命題,就是如何提取一段AVI視頻中的圖片,或者說(shuō)視頻幀的提取。雖然是第一次接觸OPENCV,可是做起來(lái)也是不難的,自己的代碼就不拿出來(lái)了,寫的很亂,網(wǎng)上的這個(gè)代碼比較不錯(cuò),為了說(shuō)明我們的主題,姑且拿這段代碼做個(gè)試驗(yàn)。

      #include <stdlib.h>

#include <stdio.h>

#include <math.h>

#include <cv.h>

#include <highgui.h>

#define NUM_FRAME 5591 //只處理前300幀,根據(jù)視頻幀數(shù)可修改





int frameH;

int frameW; 

int fps;

int numFrames;



void Video_to_image(char* filename)

{

	printf("------------- video to image ... ----------------\n");

	//初始化一個(gè)視頻文件捕捉器

	CvCapture* capture = cvCaptureFromAVI(filename);

	//獲取視頻信息

	cvQueryFrame(capture);

	frameH    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);

	frameW    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);

	fps       = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);

	numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);

	printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n\tframe numbers : %d\n", frameH, frameW, fps, numFrames);

	//定義和初始化變量

	int i = 0;

	IplImage* img = 0;

	char image_name[13];

	

	cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );

	//讀取和顯示

	while(1) 

	{

		

		img = cvQueryFrame(capture); //獲取一幀圖片

		cvShowImage( "mainWin", img ); //將其顯示

		char key = cvWaitKey(20);

		

		sprintf(image_name, "%s%d%s", "image", ++i, ".bmp");//保存的圖片名

		

		cvSaveImage( image_name, img);   //保存一幀圖片

		

		if(i >=numFrames || i >= NUM_FRAME ) break;



	}

	cvReleaseCapture(&capture);

	cvDestroyWindow("mainWin");

}

void Image_to_video()

{

	int i = 0;

	IplImage* img = 0;

	char image_name[13];

	printf("------------- image to video ... ----------------\n");

	//初始化視頻編寫器,參數(shù)根據(jù)實(shí)際視頻文件修改

	CvVideoWriter *writer = 0;

	int isColor = 1;



	writer=cvCreateVideoWriter("out.avi",CV_FOURCC('X','V','I','D'),fps,cvSize(frameW,frameH),isColor);

	printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n", frameH, frameW, fps);

	//創(chuàng)建窗口

	cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );

	while(i<NUM_FRAME)

	{

		sprintf(image_name, "%s%d%s", "image", ++i, ".bmp");

		img = cvLoadImage(image_name);

		if(!img)

		{

			printf("Could not load image file...\n");

			exit(0);

		}

		cvShowImage("mainWin", img);

		char key = cvWaitKey(20);

		cvWriteFrame(writer, img);

	}

	cvReleaseVideoWriter(&writer);

	cvDestroyWindow("mainWin");

}



int main(int argc, char *argv[])

{

	char filename[23] = "F:\\1_Xvid.avi";

	Video_to_image(filename); //視頻轉(zhuǎn)圖片

	Image_to_video();    //圖片轉(zhuǎn)視頻

	return 0;

}


    

  配置好OPENCV環(huán)境(WIN7 + VS2010)之后,這段代碼是可以運(yùn)行的,可是,實(shí)驗(yàn)室?guī)熜謳熃銈兊闹髁鲗?shí)用VC6開發(fā)的,所以老師讓我把代碼在VC6下調(diào)試出來(lái)。

結(jié)果配置好VC6之后,一運(yùn)行出現(xiàn)這個(gè)錯(cuò)誤:Null pointer in function cvGetMat

OPENCV讀取AVI視頻失敗 視頻幀提取以及圖片合成視頻

首先找資料是怎么回事,有的人說(shuō)是內(nèi)存不足之類的原因,建議在循環(huán)體里面釋放窗體資源,我照做了,可是還是不行。

郁悶了老半天,還是沒(méi)有結(jié)果。。。。。

后來(lái)我發(fā)現(xiàn)一個(gè)細(xì)節(jié),就是說(shuō),視頻的信息壓根就沒(méi)有讀進(jìn)來(lái),可以看看控制臺(tái)。

OPENCV讀取AVI視頻失敗 視頻幀提取以及圖片合成視頻

找到原因之后,后來(lái)就相對(duì)好辦了,其實(shí)也花了很長(zhǎng)時(shí)間去做。

?

網(wǎng)上很多人說(shuō)是解碼器的問(wèn)題,建議安裝K-Lite_Codec_Pack_3.9.5Full,我也試了,在實(shí)驗(yàn)室蛋疼的網(wǎng)速之下,苦苦等待,安裝,結(jié)果不知道為什么還是不行,。

最后階段,一個(gè)偶然的機(jī)會(huì),我看到這篇文章 http://hqs2892805.blog.163.com/blog/static/379968312010722915630/

結(jié)果按照這篇文章這么做,就實(shí)現(xiàn)了。。。

?

如果AVI文件打不開,請(qǐng)下載VIRTUALDUB圖像處理軟件,然后把AVI文件用XVID編碼,編碼后的文件不會(huì)太大。我自己用攝像頭拍攝的AVI有5兆,編碼后只有不到2兆,而且能夠用VC打開。

http://www.xvidmovies.com/codec/ ??? 可以從這個(gè)網(wǎng)站下載xvid解編碼器

方法:file——open video file?

?????????? video——compression——選擇XVIDMPEG CODEC

?

哈哈,慶祝一下

OPENCV讀取AVI視頻失敗 視頻幀提取以及圖片合成視頻


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 四色成人av永久网址 | 日韩欧美h | 日本精品久久久久中文字幕2 | 久久精品视在线观看2 | 日本高清视频免费在线观看 | 在线麻豆视频 | 亚洲综合激情七月婷婷 | 麻豆网站在线 | 亚洲一区二区三区高清 | 国产精品免费看久久久 | 日韩日日操 | 日日舔夜夜摸 | 欧美日本免费 | 久久草在线视频国产一 | 亚洲AV久久综合无码东京 | 日本成熟视频tube~be | 婷婷成人免费视频 | 91三级| 国产在线精品一区二区三区 | 青青草免费观看完整版高清 | 成人午夜大片免费视频77777 | 国产精品久久久久久久午夜 | 偷偷狠狠的日日2020 | 女人一级毛片免费视频观看 | 国产精品视频在线观看 | 婷婷黄色 | 国产网址在线 | 夜夜夜夜爽 | 久久国产精品视频 | 国产成人精品影院狼色在线 | 在线播放一区二区三区 | 99久久电影 | 自拍偷拍中文字幕 | 国产精品国产三级在线专区 | 青娱乐免费视频观看 | 欧美一区二区三区在线看 | 国产成人手机在线好好热 | 超碰日韩 | 青娱乐在线免费观看视频 | 欧美一性一乱一交 | 国产精品国产 |