opencv2.2でaviファイルの読み込みを行うプログラムを作成しました。
しかし、コンパイルは通りますが実行されません。aviファイルはプロジェクトフォルダ内に入れてあるのでパスの間違いはありません。
どうしたら、動くようになるでしょうか?

環境はwindows7の64bitで、visual studio 2010で行っています。
ソースは以下の通りです。
*********************************
int main( int argc, char** argv )
{
int k;

//映像の読み込み
CvCapture* capture;
char* captureWindow = "Capture";

////AVIファイルの読み込み・出力

if((capture = cvCaptureFromFile("pla.avi")) == NULL){
//ファイルが見つからないとき
return -1;
}

img0 = cvQueryFrame(capture); //キャプチャサイズを知るために画像取得

cvNamedWindow( "入力", 1 );

//キャプチャしたフレーム画像をsave[]に格納
for(k=1;;k++){
frame = cvQueryFrame(capture);

if(frame == NULL)
break;
else{
img = cvCloneImage(frame);
cvShowImage( "入力", img );

if(cvWaitKey(30) == '\x1b')
break;
}
}
cvReleaseCapture(&capture);
cvDestroyWindow("入力");

return 0;
}
****************************

aviファイルはflashで作成したものをaviファイルに書き出したものです。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> if((capture = cvCaptureFromFile("pla.avi")) == NULL){


この書き方だと、exeファイルと同じパスにないとaviファイルを読み込めないと思うのですが…

メッセージボックス等を利用してどこまでプログラムが進行しているか
デバッグしてみましょう。

また、実行されないとはどういうことでしょうか?
それだけでは意味がわかりません。
もう少し具体的に書くと詳しい回答が得られると思います。

この回答への補足

回答ありがとうございます。

> if((capture = cvCaptureFromFile("pla.avi")) == NULL){
この書き方だと、exeファイルと同じパスにないとaviファイルを読み込めないと思うのですが…
windowsXP、visualstudio2005からwindows7に環境を変えて行っており、同じプログラムを実行すると正常にaviファイルが読み込めるので、それはありません。
パス以外が原因だと考えられると思います。

実行されないとは、プログラムが停止してしまうということです。説明が足りなくてすみません。
デバッグしたときに「if((capture = cvCaptureFromFile("pla.avi")) == NULL)」の部分で止まってしまいます。

補足日時:2011/04/14 21:37
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q復元ポイントの作成とイメージファイル等のバックアップとの違いについて

今晩は、宜しくお願いします。

復元ポイントの作成とイメージファイル等のバックアップとの違いについて教えて下さい。

Windowsで復元ポイントからシステムを復元させる方法があり、
また、イメージファイル等にバックアップをとり、復元させる方法もありますが
この両者はどのように違うのでしょうか。

復元ポイントの作成とは、その時点のシステムの設定等だけを保存しているという
ことでしょうか。

また、イメージファイル等のバックアップを作成するということは
システム設定と作成したファイル等もイメージファイルとして一括してバックアップ
されるのでしょうか。

イメージファイルの復元時に、作成したファイル等もイメージファイルから
復元されるのなら、同じ名前のファイルがあった場合には、
イメージファイル作成時の古い情報のファイルになってしまうのでしょうか。

以上、宜しくお願いします。

Aベストアンサー

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。修復されるのは、選択した項目により異なる。
WindowsREを利用。
https://msdn.microsoft.com/ja-jp/library/hh825173.aspx

【バックアップと復元】
システムのバックアップを作成し、ハードディスクなどが壊れた場合に備えパソコン内部のデータを全てバックアップ・復元出来る。
Windowsのインストールディスクや、システム修復ディスクから復元が可能。
システムもユーザーデータもバックアップを取った時点の状態に戻る。

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。...続きを読む

QPING JPEGファイルのExif規格のコメント部を読み込み・書き込みするプログラムソース

以前、表記処理のできるフリーソフトをフリーソフトを教えていただいた者です。
http://oshiete1.goo.ne.jp/qa3911520.html
プログラムの中で計算した結果を、画像ファイルのコメント部に書き込むプログラムをC言語で作成しようと思っています。そこで、
int WriteComment(FILE *fd、char *コメント文字列)
int ReadComment(FILE *fd、char *コメント文字列)
のような関数を内部で使いたいのですが、このような関数ありませんか?あるいは、自作するための参考になるようなお手本となるソースリストありませんか?

Aベストアンサー

 こんにちは。

 「libpng」
 http://www.libpng.org/

 「libexif」
 http://libexif.sourceforge.net/

 一応参考程度に。

 以下PNGからコメントを表示する
static void dump(png_textp p)
{
const char* pszCompress = p->compression == PNG_TEXT_COMPRESSION_zTXt ? "あり" : "なし";
::printf("[キーワード: %s][コメント: %s][圧縮: %s]\n", p->key, p->text, pszCompress);
}

int ReadPNG(FILE* pf)
{
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if(png_ptr == NULL)
{
return 0;
}

png_infop info_ptr = png_create_info_struct(png_ptr);
if(info_ptr == NULL)
{
png_destroy_read_struct(&png_ptr, NULL, NULL);
return 0;
}

if(setjmp(png_jmpbuf(png_ptr)))
{
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return 0;
}

png_init_io(png_ptr, pf);
png_set_sig_bytes(png_ptr, 0);
png_read_png(png_ptr, info_ptr, 0, NULL);

//ココでテキスト部を参照する
for(int i = 0; i < info_ptr->num_text; ++i)
dump(&info_ptr->text[i]);

png_read_end(png_ptr, info_ptr);
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);

return 1;
}

int main()
{
FILE* pf = fopen("PNGファイル名", "rb");
ReadPNG(pf);
fclose(pf);
return 0;
}

 以下JPEGからEXIFを表示する
int main()
{
    ExifData* p = exif_data_new_from_file("JPEGファイル名");
    exif_data_dump(p);
    exif_data_free(p);
    return 0;
}

 こんにちは。

 「libpng」
 http://www.libpng.org/

 「libexif」
 http://libexif.sourceforge.net/

 一応参考程度に。

 以下PNGからコメントを表示する
static void dump(png_textp p)
{
const char* pszCompress = p->compression == PNG_TEXT_COMPRESSION_zTXt ? "あり" : "なし";
::printf("[キーワード: %s][コメント: %s][圧縮: %s]\n", p->key, p->text, pszCompress);
}

int ReadPNG(FILE* pf)
{
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, ...続きを読む

Q救出ファイル復元 2の機能について

「救出ファイル復元 2」で画像ファイルJPEGの他にRAWファイル、拡張子(CR2)を復元出来るでしょうか。

キャノンの一眼デジカメを使っているのですが、他の復元ソフトでは、復元出来ませんでした。

Aベストアンサー

Vectorあたりで『ディスク・ファイル復旧』の項目で探せばみつかりそうですが。
要は,"復元ソフトで復元できるファイルがソフトに登録されている拡張子だけしかできない"ことですので,拡張子を選択できる復元ソフトを捜せばいいと思われます。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/disk/care/

QC言語プログラムの質問です。 実数をxを読み込み次の計算をするCプログラムを作成し、そのプログラムリ

C言語プログラムの質問です。
実数をxを読み込み次の計算をするCプログラムを作成し、そのプログラムリストを記しなさい。
2sin(x)cos(x) および sin(2x)
次にこのプログラムを用いて、x=0.785を計算しなさい。

画像のプログラムを作成し、計算をしたのですが、計算結果が全て0.00000となってしまいます。
どこが間違っているか教えてください!

Aベストアンサー

scanfを以下のように変えてください。
scanf("%lf", &x);

Q削除した画像ファイルの取り出しまたは復元方法

ごみ箱に入れてから削除したファイルの復元方法を教えてください。

以前にも同様の質問をしたのですが、その際に教えていただいた方法で確かにいくつかのファイルは復元することができました。

しかし、一番復元したい画像ファイル(jpeg形式)が復元できません、同時期に同じく削除したファイルは無事に取り出せたのですが肝心のファイルは取り出せません。指定するファイル名、フォルダ名などの間違いはないのですが何が原因で復元できないのか理解できません。

良きアドバイスをいただければ助かります。
宜しくお願いいたします。

Aベストアンサー

こういったファイル復元ソフトを利用してファイルを復活させます。

●FileRecovery(フリーウェア)

消去・欠損したファイルを復元するソフト。
http://www.pcinspector.de/download.htm

●復元(フリーウェア)
http://www.vector.co.jp/soft/win95/util/se192983.html

■FINALDATA(ファイナルデータ)フォトリカバリー3.0(有料)
http://www.finaldata.ne.jp/f_8_3.html

当然ながら復元できる確立は有料ソフトのほうが高いです。

これらを使っても復元できない場合はファイルが上書きされて完全に消えている可能性が高いです。

QopenCVの動画読み込み

URL:
http://chihara.naist.jp/opencv/?%C6%B0%B2%E8%A5%D5%A5%A1%A5%A4%A5%EB%A1% CAavi%A5%D5%A5%A1%A5%A4%A5%EB%A1%CB%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF

のChihara-Labの動画ファイル(aviファイル)読み込みプログラムを試したのですが、exeファイルと同じフォルダにaviを入れたり、filenameのところをフルパスで記述しても実行結果が「指定のaviファイルが見つかりませんでした」になってしまいます。
 どなたかaviファイルの読み込み方ご教授お願いします。ちなみにVC++2008を使用しています。

Aベストアンサー

No.1です。

>mpegの拡張子をaviにしただけ
これだと、avi形式の動画ファイルにはなりませんよ(^^);
mpeg→avi変換用のソフトウェアを使って、変換してみてください。
(フリーソフトや、試用版で無料で使えるソフトもあると思いますので探してみてください)

Q「ウイルス感染ファイル」削除後のシステム復元でどうなる?

ウイルスバスターで幾つかのウイルス感染ファイル発見し全て削除しましたが、感染したファイルはシステムファイルでしたので少し心配でしたが削除しました。
そこで教えて頂きたいのですが、感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?

Aベストアンサー

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライブにOSのインストールディスクを入れておく。
2.「スタート」「コマンドプロンプト」または「ファイル名を指定して実行」で
「sfc /scannow」と入力して「OK」

「Windows XP professional のディスクを入れてください」という表示が出ることがありますがHome Editionであれば「無視」を選んでスキップしてください

>感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?
出来ないことはないでしょうが、あまりお勧めできません。
現在の状態が正常でない。
過去の状態の方が快適に操作できる。
という場合、それがいいかもしれません。
しかし、Windowsの設定というのは非常に広範囲にわたっており、現在と過去を比較して、どちらが適正かを判断するのは容易ではありません。
また、過去の復元ポイントの中には不正な設定が含まれている場合があり、間違って、そのポイントを選択することもあります。
ウィルス対策ソフトのサイトでは一旦復元設定を無効にして、過去の復元ポイントを全て消去することを推奨しています。

>一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?
間違った操作をすると汚染されたファイルが復元されてしまいます。
一旦復元設定を無効にして、過去の復元ポイントを全て消去することで汚染されたファイルは二度と復元しません。

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライ...続きを読む

Qファイルの作成・書き込み・読み込みについて

ファイルの取り扱いについて、どのように記述すればいいのかが分かりません。
分からないことが多いので(1)~(4)の質問に分けています、Cの勉強は趣味程度にしかできていないので、詳しくご回答いただけると嬉しいです。
自分なりに書いてみます、間違いがあればご指摘宜しくお願いします。

(1)Aを頭文字にして100個のcsvファイルを作成 (a1,a2…a100)

char A[100]
FILE *fp;
for(i=1;i<101;i++)
{
snprintf(A,sizeof A,"A%d.csv",i);
if((fp = fopen(A,"w"))!=NULL) {exit(1);}
}

(2)A1を開きデータを入れる、この動作を同様に2~100で繰り返す。

A1に入れたいデータはx,y,zで1000行
fp = fopen("A1.csv","a");
for(z=1;z<11;z++)
{
for(y=1;y<11;y++)
{
for(x=1;x<11;x++)
{
fprintf(fp,"%d,%d,%d\n",x,y,z);
}
}
}
fclose(fp);

これでこんな感じに書き込まれるはず・・・
1,1,1
2,1,1
3,1,1
 ・
 ・
 ・
10,10,10

これを同様に2~100のファイルに対して一気に行いたいですが、書き方が分かりません。

(3)再びA1を開きx=10,Y=10の時のzの値を知りたい。
こんな事はできるのでしょうか? もし無理なら~行目のデータを呼び出す

(4)そしてA1を開きx=10,Y=10の時の、zだけを上書き。

長くなってすいません、分からない事だらけなので宜しくお願いします。

ファイルの取り扱いについて、どのように記述すればいいのかが分かりません。
分からないことが多いので(1)~(4)の質問に分けています、Cの勉強は趣味程度にしかできていないので、詳しくご回答いただけると嬉しいです。
自分なりに書いてみます、間違いがあればご指摘宜しくお願いします。

(1)Aを頭文字にして100個のcsvファイルを作成 (a1,a2…a100)

char A[100]
FILE *fp;
for(i=1;i<101;i++)
{
snprintf(A,sizeof A,"A%d.csv",i);
if((fp = fopen(A,"w"))!=NULL) {exit(1);}
}

(2)A1を開きデータを入れる...続きを読む

Aベストアンサー

#5 です。 回答プログラムだけで字数制限いっぱいになってしまいました。

あなたの質問は「ランダムアクセスの仕方を教えてください。」というものです。
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9
ファイルは、1個作成しようが100個作成しようがやっていることは同じですから、N_FILES の値を好みに応じて変更してください。
プログラムの要点は
 #define FORM "%4d,%4d,%4d,%10d\n"
 #define FORM_SIZE 26 //一行当たり
と出力形式を改行\nを含めて 26バイトに固定していることです。それによって任意 x,y,z点の値nを参照したり、変更したりできるようになっています。

とりあえず、あなたの希望に答えて、その都度ファイルをオープンするプログラムを
 Database sample:
  1. Create
  2. Input
  3. Show
  4. Correct
 Input number
の表示順(1~4)に入力し、実行してみてください。
各作業毎にホルダー内のCSVファイルを確認すれば、どのような処理がなされているかわかると思います。


その他参照URL
http://www9.plala.or.jp/sgwr-t/c/sec17.html
http://www1.cts.ne.jp/~clab/hsample/File/File06/File06.html

#5 です。 回答プログラムだけで字数制限いっぱいになってしまいました。

あなたの質問は「ランダムアクセスの仕方を教えてください。」というものです。
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9
ファイルは、1個作成しようが100個作成しようがやっていることは同じですから、N_FILES の値を好みに応じて変更してください。
プログラムの要点は
 #define FORM "%4d,%4d,%4d,%10d\n"
 #define FORM_SIZE 26 //一行当たり
と出力形式を改行\n...続きを読む

Q復元ソフトのふと感じた疑問 -ファイル名を削除したい-

先日、復元ソフトを使用していたときに感じたことなのですが
(使用ソフトは「復元」です。)
ファイルを復元する際の手順で削除したファイルが検索できますよね。
このファイル検索の時に、HITしないようにファイル名を完全に削除したい場合はどのようにすればいいのでしょうか??

例えば、「●●との秘密旅行001.jpg」のファイルを削除したとします。
その後、復元ソフトで検索をかけるとファイルを復元しなくてもファイル名を見ただけで怪しいファイルとわかってしまいますよね。
復元ソフトの検索で、表示されなくする方法か、別名に変える方法があるのなら教えてください。

Aベストアンサー

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名前を消去したいファイルをクリックするか、名前を消去したい複数ファイルを左クリックしながら選択する→[消去]ボタンをクリック→[OK]をクリック

これで、名前を消せます。しかしながら完璧ではなくて、一部消せないこともあります。
(「DataRecovery」を再起動してもう一度ドライブをスキャンすると消せなかったファイルが表示されます)

参考URL:http://www.vector.co.jp/soft/win95/util/se382922.html

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名...続きを読む

Q複数のファイルを読み込むバッチファイル作成

openCVで画像処理をしています。
複数の画像を一度に読み込み処理をするためにバッチファイルを使おうと考えているのですが,
どのように書いたらよいかがよくわかりません。

ファイル名を指定した1つの画像に対し処理を行うC言語プログラムは作成済みで,
そこにバッチファイルを組み合わせて,指定したフォルダ内の画像すべてを処理できないかと考えております。

どのように実装したらいいかご教授していただけると幸いです。
よろしくお願いします。

Aベストアンサー

FORコマンドを使ったバッチファイルですと、以下の線内のような記述で出来るかと思います。

―――――――――――――――――――――

@echo off

FOR %%A IN ("C:\画像フォルダ\*.jpg") DO start "" "C:\プログラム.exe" "%%A"

―――――――――――――――――――――

「C:\プログラム.exe」に対し、「C:\画像フォルダ」内の、「~.jpg」ファイルを一つずつ渡していきます。


人気Q&Aランキング

おすすめ情報