2011-12-23 10 views
4

まだ明らかでない場合、これはOpenCVでの初日です。 私がやりたいことはmirror2です。そしてそれをアップサンプリングします。OSX上のOpenCVでライブミラーリングしたいビデオ、どこから始めるべきかわからない

IplImageタイプのフレームで行列操作を使用する方法がわかりません。どのようにフレーム2をミラーリングし、それをWebcam2ウィンドウにアップサンプリングできますか?以下は私のコードです:

#include "cv.h" 
#include "highgui.h" 
#include <stdio.h> 



// A Simple Camera Capture Framework 
int main() { 
    CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); 
    if (!capture) { 
    fprintf(stderr, "ERROR: capture is NULL \n"); 
    getchar(); 
    return -1; 
    } 
    // Create a window in which the captured images will be presented 
    cvNamedWindow("Webcam", CV_WINDOW_AUTOSIZE); 
    cvNamedWindow("Webcam2", CV_WINDOW_AUTOSIZE); 
    // Show the image captured from the camera in the window and repeat 
    while (1) { 
    // Get one frame 
    IplImage* frame = cvQueryFrame(capture); 
    IplImage* frame2 = cvCreateImage(cvSize (frame->width*2, frame->height*2), 
    frame->depth, frame->nChannels); 
    cvPyrUp (frame, frame2); 



     if (!frame) { 
     fprintf(stderr, "ERROR: frame is null...\n"); 
     getchar(); 
     break; 
    } 

    cvShowImage("Webcam", frame); 
    cvShowImage("Webcam2", frame2); 
    // Do not release the frame! 
    //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version), 
    //remove higher bits using AND operator 
    if ((cvWaitKey(10) & 255) == 27) break; 
    } 
    // Release the capture device housekeeping 
    cvReleaseCapture(&capture); 
    cvDestroyWindow("Webcam"); 
    cvDestroyWindow("Webcam2"); 
    return 0; 
} 
+0

* transpose *、* rotate *、* flip *を意味しますか? –

+0

転置。基本的には、行列[1、0、1; 1、0、0; 1、0、0]のように見える。 0,0,1; 0,0,1]である。それは明確ですか?私はライブフレームで行列演算を実行する方法を知りません。 – JesseBikman

+0

これは、左右反転(鏡像)のように見えます - それはあなたが望むものですか? –

答えて

7

OpenCVの中にきちんとした機能があり、flip()と呼ばれます。 Cの対応物はcvFlip()と命名されています。それがあなたを助けると確信しています。

また、私は常にあなたにアドバイスを与えます:CインターフェイスからC++に移動してください!ずっと清潔で、はるかに安全で、はるかに簡単!

thisの回答を確認して、2つの違いを確認できます。

+0

あなたのコードは最初の悪い画像でクラッシュします。あなたが何らかの処理をした後ではなく、 'frame'がキャプチャした後に正確にヌルでないことを確認する必要があります。 – Sam

+0

OpenCVの貧弱なOSXのドキュメントを考慮して、CインターフェイスからC++インターフェイスに移行する方法はわかりませんが、flip()ライブラリは完璧です!どうもありがとうございました。 – JesseBikman

+0

私はこの行を追加しました: 'cvFlip(frame2、frame2、1);' – JesseBikman

関連する問題