#include <cv.h>
#include <highgui.h>
//****************寫入avi視頻文件*************
int main()
{
CvCapture * capture = 0;//創建結構體
capture = cvCreateFileCapture("D:\\op\\man.avi");//原始視頻地址
if (!capture){ return -1; }//讀取失敗
IplImage *bgr_img = cvQueryFrame(capture);//讀取幀
double fps = cvGetCaptureProperty(capture,
CV_CAP_PROP_FPS);//獲取capture的fps數據
CvSize imgsize = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));//獲取capture的size信息
CvVideoWriter * writer = cvCreateVideoWriter("D:\\op\\me2.avi",//輸出視頻被存放的地址
CV_FOURCC('M','J','P','G'),//指定編碼格式
fps,//播放的幀率
imgsize);//視頻圖像的大小
IplImage * logpolar_image = cvCreateImage(imgsize, IPL_DEPTH_8U, 3);//創建轉換後的結構體
cvNamedWindow("test_demo7", CV_WINDOW_AUTOSIZE);
while ((bgr_img = cvQueryFrame(capture)) != NULL)//若讀取幀不爲空
{
cvLogPolar(bgr_img,//原視頻image結構體
logpolar_image, //轉換後的image結構體
cvPoint2D32f(bgr_img->width / 2, bgr_img->height / 2),//極座標中心
40,//縮放比例40
CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS);//轉換成對應極座標的形式;雙線性插值+空白部分填充黑色
cvWriteFrame(writer, logpolar_image);//將轉換後的logpolar_image寫入視頻writer
cvShowImage("test_demo7", logpolar_image);//輸出圖像確實長得很奇怪
char c = cvWaitKey(33);
if (c == 27) break;
#include <highgui.h>
//****************寫入avi視頻文件*************
int main()
{
CvCapture * capture = 0;//創建結構體
capture = cvCreateFileCapture("D:\\op\\man.avi");//原始視頻地址
if (!capture){ return -1; }//讀取失敗
IplImage *bgr_img = cvQueryFrame(capture);//讀取幀
double fps = cvGetCaptureProperty(capture,
CV_CAP_PROP_FPS);//獲取capture的fps數據
CvSize imgsize = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));//獲取capture的size信息
CvVideoWriter * writer = cvCreateVideoWriter("D:\\op\\me2.avi",//輸出視頻被存放的地址
CV_FOURCC('M','J','P','G'),//指定編碼格式
fps,//播放的幀率
imgsize);//視頻圖像的大小
IplImage * logpolar_image = cvCreateImage(imgsize, IPL_DEPTH_8U, 3);//創建轉換後的結構體
cvNamedWindow("test_demo7", CV_WINDOW_AUTOSIZE);
while ((bgr_img = cvQueryFrame(capture)) != NULL)//若讀取幀不爲空
{
cvLogPolar(bgr_img,//原視頻image結構體
logpolar_image, //轉換後的image結構體
cvPoint2D32f(bgr_img->width / 2, bgr_img->height / 2),//極座標中心
40,//縮放比例40
CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS);//轉換成對應極座標的形式;雙線性插值+空白部分填充黑色
cvWriteFrame(writer, logpolar_image);//將轉換後的logpolar_image寫入視頻writer
cvShowImage("test_demo7", logpolar_image);//輸出圖像確實長得很奇怪
char c = cvWaitKey(33);
if (c == 27) break;
}
cvReleaseVideoWriter(&writer);//釋放writer
//cvReleaseImage(&bgr_img);bgr_img它不需要釋放,否則會出現報錯。原因:bgr_img使用的是通過cvqueryframe的capture的內存。當capture被釋放後每一幀圖像所對應的內存都會被釋放。
cvReleaseImage(&logpolar_image);
cvReleaseCapture(&capture);
return (0);
}
cvReleaseVideoWriter(&writer);//釋放writer
//cvReleaseImage(&bgr_img);bgr_img它不需要釋放,否則會出現報錯。原因:bgr_img使用的是通過cvqueryframe的capture的內存。當capture被釋放後每一幀圖像所對應的內存都會被釋放。
cvReleaseImage(&logpolar_image);
cvReleaseCapture(&capture);
return (0);
}