キャプチャーした画像をモノクロに変換(反転修正済)

キャプチャーした画像をモノクロに変換のコードに反転コードを追加し、反転で出力される不具合を修正


元コードで実行すると出力される画像が上下反転されて出力されたため、それに反転コードを追加した
参照先
元コード(キャプチャーした画像をモノクロに変換)
追加コード(画像の反転)
一番下にファイルをアップロードしました

include <cv.h>
include <highgui.h>
include <ctype.h>
include <stdio.h>

int
main (int argc, char **argv)
{
 CvCapture *capture = 0;
 IplImage *frame = 0;
 IplImage *mono = 0;
 IplImage *dst_img = 0; 追加
 double w = 320, h = 240;
 int c;

 // (1)コマンド引数によって指定された番号のカメラに対するキャプチャ構造体を作成する
 if (argc == 1 || (argc == 2 && strlen (argv[1]) == 1 && isdigit (argv[1][0])))
   capture = cvCreateCameraCapture (argc == 2 ? argv[1][0] - '0' : 0);

 /* この設定は,利用するカメラに依存する */
 // (2)キャプチャサイズを設定する.
 cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w);
 cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h);

 cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
 cvNamedWindow ("mono", CV_WINDOW_AUTOSIZE);
 cvNamedWindow ("dst", CV_WINDOW_AUTOSIZE); 追加

 // (3)カメラから画像をキャプチャする
 while (1) {
   frame = cvQueryFrame (capture);
   cvShowImage ("Capture", frame);
   c = cvWaitKey (2);
   if (c == '\x1b')
     break;
   mono = cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);
   cvCvtColor(frame,mono,CV_BGR2GRAY);
   dst_img = cvCloneImage (mono); 追加
   cvFlip (mono, dst_img, 0); 追加 0で上下反転、1で左右反転、-1で上下左右反転
   cvShowImage("mono",mono); 追加
   cvShowImage("dst",dst_img);  追加
 }
 cvDestroyWindow("dst"); 追加
 cvReleaseImage (&dst_img); 追加
 cvDestroyWindow("mono");
 cvReleaseImage(&frame);
 cvReleaseCapture (&capture);
 cvDestroyWindow ("Capture");

 return 0;
}

  • 逃げちゃだめだ! -- (碇くん) 2009-07-30 10:02:25
名前:
コメント:

すべてのコメントを見る
最終更新:2009年07月30日 10:21
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル