文章目錄
- 一直以為視頻的處理挺難的,但是發現寫入在opencv裡是最簡單的最基礎的,這個例子挺好玩的,嘿嘿,扭曲,雖然公式不懂~>-<~但是挺好玩的~
- LogPolar
一直以為視頻的處理挺難的,但是發現寫入在opencv裡是最簡單的最基礎的,這個例子挺好玩的,嘿嘿,扭曲,雖然公式不懂~>-<~但是挺好玩的~LogPolar
把影像地圖到極指數空間
void cvLogPolar( const CvArr* src, CvArr* dst, CvPoint2D32f center, double M, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );
-
src
-
輸入映像。
-
dst
-
輸出映像。
-
center
-
變換的中心,輸出映像在這裡最精確。
-
M
-
幅度的尺度參數,見下面公式。
-
flags
-
插值方法和以下選擇標誌的結合
- CV_WARP_FILL_OUTLIERS -填充輸出映像所有像素,如果這些點有和外點對應的,則置零。
- CV_WARP_INVERSE_MAP - 表示矩陣由輸出映像到輸入映像的逆變換,並且因此可以直接用於像素插值。否則,函數從map_matrix中尋找逆變換。
-
fillval
-
用於填充外點的值。
函數cvLogPolar用以下變換變換輸入映像:
正變換 (CV_WARP_INVERSE_MAP 未置位):
dst(phi,rho)<-src(x,y)
逆變換 (CV_WARP_INVERSE_MAP 置位):
dst(x,y)<-src(phi,rho),
這裡,
rho=M*log(sqrt(x2+y2)) phi=atan(y/x)
此函數模仿人類視網膜中央凹視力,並且對於目標跟蹤等可用於快速尺度和旋轉變換不變模板匹配。
理解了函數之後呢,開始寫入視頻~
#include"highgui.h"#include"cv.h"int main(int argc, char* argv[]){CvCapture* capture = 0;char* inputVideo = "test1.avi";char* outputVideo = "output.avi";capture = cvCreateFileCapture(inputVideo);if(!capture){return -1;}IplImage *bgr_frame = cvQueryFrame(capture);//init the video readdouble fps = cvGetCaptureProperty( //get fps zhen lvcapture,CV_CAP_PROP_FPS);CvSize size = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));CvVideoWriter *writer = cvCreateVideoWriter(outputVideo,CV_FOURCC('M','J','P','G'),fps,size);IplImage* logpolar_frame = cvCreateImage(size,IPL_DEPTH_8U,3);while((bgr_frame = cvQueryFrame(capture))!=NULL){cvLogPolar(bgr_frame,logpolar_frame,cvPoint2D32f(bgr_frame->width/2,bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);cvWriteFrame(writer,logpolar_frame);}cvReleaseVideoWriter(&writer);cvReleaseImage(&logpolar_frame);cvReleaseCapture(&capture);return(0);}
經過實驗發現,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,和 CV_INTER_LINEAR or CV_WARP_FILL_OUTLIERS 還有 CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS產生的結果都是一樣的。
只有這個 CV_INTER_LINEAR||CV_WARP_FILL_OUTLIERS||CV_WARP_INVERSE_MAP結果不一樣~
為什麼呢?還請大神指教,俺數學不好……
有實驗結果的視頻,怎麼能傳呢?挺好玩的~
先傳兩個視頻的吧~好吧~把我們研究室的哥扭曲了~不過他也不會看到~