キャリブレーション

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
y77sar

キャリブレーション

#1

投稿記事 by y77sar » 5年前

カメラから直接画像を取ってきてキャリブレーションがしたいのですがうまくいきません。
ハンドルされていない例外が発生しました(メモリの場所)というエラーがでます。
どこをどう変えればいいのかわかりません。
どなたか教えて頂けないでしょうか?

#include <stdio.h>
#include <stdlib.h>
#include <opencv/cv.h>
#include <opencv2/highgui/highgui.hpp>
#include <ctype.h>

#define WIDTH 10
#define HEIGHT 7
#define GRID_UNIT 24.0
#define CORNERS (WIDTH*HEIGHT)
#define VIEWS 5

int
main (int argc, char **argv)
{
CvCapture *capture = 0;
IplImage *frame = 0;
double w=640,h=480;
CvSize pattern_size = cvSize(WIDTH,HEIGHT);
int found=0,corner_count=0,i=0,c;
CvPoint2D32f corners[CORNERS];

// (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);

// (3)カメラから画像をキャプチャする
while (1) {
frame = cvQueryFrame (capture);

found = cvFindChessboardCorners(frame, pattern_size, &corners[0], &corner_count);

cvDrawChessboardCorners(frame, pattern_size, &corners[0], corner_count, found);

cvShowImage("Capture",frame);

c = cvWaitKey (2);
if (c == '\x1b')
break;
}
cvReleaseCapture (&capture);
cvDestroyWindow ("Capture");

return 0;
}

“C言語何でも質問掲示板” へ戻る