0

OpenCV を使用してコーナー検出を実装したところ、コーナー値がゼロになりました。3488*2616 解像度のカメラ画像を使用しています。高解像度画像のコーナー検出を見つける適切な方法はありますか。私のミスをしました.ここに私のコードと画像も添付しました.助けてください.私はopencvに非常に慣れていません.私の英語については申し訳ありません.

int board_w = 6;
int board_h = 6;
const int MAX_CORNERS = 500;

int main()
{

    int board_n = (board_w-1) * (board_h-1);
    CvSize board_sz = cvSize( board_w-1, board_h-1 );


    CvPoint2D32f* corners = new CvPoint2D32f[board_n];
    int cornerCount = 0;

    IplImage *image = cvLoadImage("myimage.jpg");
    IplImage *gray_image = cvCreateImage(cvGetSize(image),8,1);
    cvCvtColor(image, gray_image, CV_BGR2GRAY );
const int N = cvFindChessboardCorners(gray_image,board_sz,&corners[0],&cornerCount,10);


    cvFindCornerSubPix(gray_image,&corners[0],cornerCount,cvSize(3,3),cvSize(-1,-1),cvTermCriteria(CV_TERMCRIT_EPS,0,.01)); 

    printf("\ the count was:%d \n",cornerCount);
    for (int i = 0; i < cornerCount; i++)
    {
cvCircle (image, cvPointFrom32f (corners[i]), 3, CV_RGB (0, 0, 255), 2);

    }

        cvNamedWindow("firstframe");            
        cvShowImage("firstframe",image);
        cvWaitKey(0);
    cvReleaseImage(&image);
    cvReleaseImage(&gray_image);



}

コードは通常のチェス盤の画像では機能しますが、その解像度のリアルタイム カメラ画像を使用している間は機能しません。 ここに画像の説明を入力

4

1 に答える 1

0

高解像度の画像を使用しているという理由だけで検出が実際に失敗していると思われる場合は、いつでもcvResize()IplImageを小さいサイズにして観察結果を確認できます。

于 2012-06-01T12:29:55.540 に答える