キャプチャーした画像をエッジ検出

キャプチャーした画像をエッジ検出したコード


参照先
元コード(エッジ検出)
一番下にファイルをアップロードしました


include <cv.h>
include <highgui.h>
include <ctype.h>
include <stdio.h>
int main(int argc, char **argv)
{
   CvCapture *capture = 0;
   IplImage *dst = 0;
   double w = 320, h = 240;
   int c;
   IplImage *mono = 0, *ten = 0;
   IplImage *dst_img1, *dst_img2, *dst_img3;
   IplImage *tmp_img;
   // コマンド引数によって指定された番号のカメラに対するキャプチャ構造体を作成する
   if (argc == 1
|| (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
capture = cvCreateCameraCapture(argc == 2 ? argv[1][0] - '0' : 0);
/* この設定は,利用するカメラに依存する */
   // キャプチャサイズを設定する.  
   cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, w);
   cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, h);
   cvNamedWindow("Capture", CV_WINDOW_AUTOSIZE);

   // カメラから画像をキャプチャする  
   while (1) {
dst = cvQueryFrame(capture);
c = cvWaitKey(10);
if (c == '\x1b')
    break;
cvShowImage("Capture", dst);

// 画像形状の変更を行う
/* グレースケール画像用にメモリを確保 */
mono = cvCreateImage(cvGetSize(dst), IPL_DEPTH_8U, 1);
ten = cvCreateImage(cvGetSize(dst), IPL_DEPTH_8U, 1);

/* カラー画像をグレースケールに変換 */
cvCvtColor(dst, mono, CV_BGR2GRAY);

/* 水平反転*/
cvFlip (mono, ten, 0);

// 画像の読み込み
tmp_img = cvCreateImage(cvGetSize(ten), IPL_DEPTH_16S, 1);
dst_img1 = cvCreateImage(cvGetSize(ten), IPL_DEPTH_8U, 1);
dst_img2 = cvCreateImage(cvGetSize(ten), IPL_DEPTH_8U, 1);
dst_img3 = cvCreateImage(cvGetSize(ten), IPL_DEPTH_8U, 1);

// Sobelフィルタによる微分画像の作成
cvSobel(ten, tmp_img, 1, 0);
cvConvertScaleAbs(tmp_img, dst_img1);

// 画像のLaplacianの作成
cvLaplace(ten, tmp_img);
cvConvertScaleAbs(tmp_img, dst_img2);

// Cannyによるエッジ画像の作成
cvCanny(ten, dst_img3, 50.0, 200.0);

// 画像の表示
cvNamedWindow("Sobel", CV_WINDOW_AUTOSIZE);
cvShowImage("Sobel", dst_img1);
cvNamedWindow("Laplace", CV_WINDOW_AUTOSIZE);
cvShowImage("Laplace", dst_img2);
cvNamedWindow("Canny", CV_WINDOW_AUTOSIZE);
cvShowImage("Canny", dst_img3);
   }

   cvDestroyWindow("Sobel");
   cvDestroyWindow("Laplace");
   cvDestroyWindow("Canny");
   cvReleaseImage(&dst_img1);
   cvReleaseImage(&dst_img2);
   cvReleaseImage(&dst_img3);
   cvReleaseImage(&tmp_img);

   cvReleaseCapture(&capture);
   cvDestroyWindow("Capture");
   return 0;
}

名前:
コメント:

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

下から選んでください:

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