キャリブレーション
Posted: 2015年11月20日(金) 00:32
カメラから直接画像を取ってきてキャリブレーションがしたいのですがうまくいきません。
ハンドルされていない例外が発生しました(メモリの場所)というエラーがでます。
どこをどう変えればいいのかわかりません。
どなたか教えて頂けないでしょうか?
#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;
}
ハンドルされていない例外が発生しました(メモリの場所)というエラーがでます。
どこをどう変えればいいのかわかりません。
どなたか教えて頂けないでしょうか?
#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;
}