2012-04-01 10 views
-1

ビデオファイルから画像を保存しようとしましたが、ハードディスクに画像を保存できませんでした。次のプログラムを間違いなくコンパイルしました。OpenCVを使用して画像を保存する

#include <stdio.h> 
#include <stdlib.h> 
#include <cv.h> 
#include <cxcore.h> 
#include <highgui.h> 

int main(int argc, char* argv[]) { 

    int c=1; 
    IplImage* img=0; 
    IplImage* small; 
    IplImage* small=new IplImage(inputArray); 
    char buffer[1000]; 
    CvCapture* cv_cap=cvCaptureFromFile("test.avi"); 
    cvNamedWindow("Video",CV_WINDOW_AUTOSIZE); 
    while(1) { 

     img=cvQueryFrame(cv_cap); 
     cvShowImage("Video",img); 
     small = cvCreateImage(cvSize(img->width/2,img->height/2), 8, 3); 
     sprintf(buffer,"C:/image%u.jpg",c); 


     c++; 
     if (cvWaitKey(100)== 27) break; 
    } 

    cvDestroyWindow("Video"); 
    return 0; 
} 

私はビデオファイルから画像を保存することができますどのように2010年 2.3.1 OpenCVのライブラリおよびVisual Studioを使用していますか?


私はまた、プログラムコードの上に、このコードを試してみましたが、次のプログラムcode.After私は次のコードを追加すると、また同じ問題があった参照wrong.please何かです。

cvSaveImage(buffer,img); 

修正したプログラムは、これを見て、私はそれが任意の画像を保存していないプログラムを実行しerror.afterをコンパイルがないwrong.but私が何をしたかを教えてbelow.please示されています。

#include"stdafx.h" 
    #include<cv.h> 
    #include<highgui.h> 
    #include<cxcore.h> 


    int main(int argc, char* argv[]) { 

    int c=1; 
    IplImage* img=0; 
    char buffer[1000]; 
    CvCapture* cv_cap=cvCaptureFromCAM(-1); 
    cvNamedWindow("Video",CV_WINDOW_AUTOSIZE); 
    while(1) { 

    img=cvQueryFrame(cv_cap); 
    cvShowImage("Video",img); 
    sprintf(buffer,"D:/image%u.jpg",c); 
    cvSaveImage(buffer,img); 
    c++; 
    if (cvWaitKey(100)== 27) break; 
    } 

    cvDestroyWindow("Video"); 
    return 0; 
    } 

あなたはどのようにイメージ.aboveプログラムを保存することは私にあなたがあなたのsuggestions.thankを与える任意のimages.pleaseを保存していない私に言うことができます。

+1

ながら画像を保存するために、ここで

は例 - のですか?あなたがファイル名を含む 'buffer'で何もしないように見えます。 – WeaselFox

+1

また、C++を使用している場合はなぜ旧Cインターフェイスを使用するのですか? – etarion

+1

画像の保存時に[画像を保存しません]の複製が可能です。(http://stackoverflow.com/questions/9966600/doesnt-save-any-image-when-saving-frames-of-a -video) – karlphillip

答えて

0

は、あなたが実際に画像を保存するのを忘れ:

cvSaveImage(buffer ,img); 

また、次は冗長である:あなたが問題を解決したかどう

IplImage* small; // <-- you don't need this 
IplImage* small=new IplImage(inputArray); 
+0

私はopenCVを新しくしました。私も上記のコードを追加しました。しかし、まだ同じproblem.pleaseを持っています。 .. ..助けてくれてありがとう。 – NimPointer

+0

@NimPointer今、答えを受け入れる時が来た – Eregrith

0

は知ってはいけません。そうでない場合は、imwrite( "test.jpg"、img)を使用できます。このコードでは、あなたがそれを保存しようとしている(1){

img=cvQueryFrame(cv_cap); 
    cvShowImage("Video",img); 
    imwrite("test.jpg",img); 
}