2011-06-30 16 views
0

私はopencv2を使って、ubuntu 10.04を使って簡単なプログラムを手に入れようとしています。そこから別のイメージを作成し、元のイメージのサイズを2(幅と高さ)で変更します。以下はコードです。実行時に、サイズ変更された画像ウィンドウは表示されません。opencvResize()problem

# include "stdio.h" 
#include "opencv2/highgui/highgui_c.h" 
#include <opencv2/imgproc/types_c.h> 

int main(int argc, char** argv) { 
    IplImage* img = 0; 
    IplImage* dst_img = 0; 


    if(argc < 2) { 
    printf("Usage: Accepts one image as argument\n"); 
    exit(EXIT_SUCCESS); 
    } 

    img = cvLoadImage(argv[1],1); 
    if(!img) { 
    printf("Error loading image file %s\n", argv[1]); 
    exit(EXIT_SUCCESS); 
    } 

    dst_img = cvCreateImage(cvSize(img->width*2,img->height*2),img->depth,img->nChannels); 
    if(!dst_img) { 
    printf("Error loading output image file \n"); 
    exit(EXIT_SUCCESS); 
    } 


    cvResize(img,dst_img,CV_INTER_LINEAR); 

    cvNamedWindow("Original Image", CV_WINDOW_AUTOSIZE); 
    cvNamedWindow("RescaledImage", CV_WINDOW_AUTOSIZE); 

    cvMoveWindow("Original Image", 720, 515); 
    cvMoveWindow("RescaledImage", 1500,1200); 

    cvShowImage("Original Image", img); 
    cvShowImage("RescaledImage", dst_img); 

    cvWaitKey(0); 

    cvReleaseImage(&img); 
    cvReleaseImage(&dst_img); 

    cvDestroyWindow("Original Image"); 
    cvDestroyWindow("RescaledImage"); 

    return EXIT_SUCCESS; 
    } 

私は正しく上記cvCreateImage()、& cvResize()を使用していますか?

どのように入力画像のサイズを両方向に2倍にすることができますか?

Web上の任意のポインタ(ブログ、チュートリアル)、OpenCVのハンドブックを勉強するのに使えるサンプルコードがたくさんあるOpenCV用の書籍はありますか?

+0

悪いそれはうまく動作します。私がUbuntuでコードを実行していて、私が作業していた場所(Windows上でXserverを実行中)からWindowsマシンに表示をエクスポートしました。私がubuntuターミナルをチェックしてこのコードを実行すると、いくつかの奇妙な理由で、スケーリングされたイメージの2番目のopenCVウィンドウが画面上に表示されていました。私のウィンドウに表示されたウィンドウは、タスクバーに表示されていただけなので、ドラッグする可能性はありませんでしたが、クリックしても何も表示されませんでした。奇妙な。すべての説明。 – goldenmean

+0

今、新しいイメージを作成するだけでなく、元のサイズの2倍のイメージを作成していることがわかりました。私が前に言ったことを忘れて。問題の解決策をこのスレッドの回答として追加することを検討してください。これにより、今後他の人を助けることができます。 – karlphillip

答えて

1
cvMoveWindow("RescaledImage", 1500,1200); 

私の間違い。私はこれがウィンドウ/イメージの次元だと思った。しかし、これは画面上のウィンドウの位置です。これに変更しました -

cvMoveWindow("RescaledImage", 100,100); 

両方のウィンドウは現在正常です!

+1

できるだけ正式な回答としてこれを受け入れてください。 – karlphillip