[opencv]重寫視頻以及logpolar變換

來源:互聯網
上載者:User
文章目錄
  • 一直以為視頻的處理挺難的,但是發現寫入在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結果不一樣~

為什麼呢?還請大神指教,俺數學不好……

有實驗結果的視頻,怎麼能傳呢?挺好玩的~

先傳兩個視頻的吧~好吧~把我們研究室的哥扭曲了~不過他也不會看到~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.