キャプチャーした画像をエッジ検出したコード
参照先
元コード(
エッジ検出)
一番下にファイルをアップロードしました
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