0

画像をループして複数のROIを作成しようとしています(それらの数は変更できます)が、システムは1つしか選択できないようです。私はLBP顔検出器を作ろうとするのでそれが必要です。

これが私のループと表示です(ここに何かを投稿するのは初めてなので、間違いをしなかったといいのですが):

    for (i=0;i<regionPerLine*regionPerLine;i++) {
        if(i%4==0 && i!=0) {
            indexLines=0;
            indexColumns=indexColumns+height/regionPerLine;
        }
        if (i%3==0)
            color=cvScalar(c,0,0,0);
        else if (i%2==0)
            color=cvScalar(0,c,0,0);
        else 
            color=cvScalar(0,0,c,0);
        roi.x=indexLines;
        roi.y=indexColumns;
        printf("\n\n%d\t%d", roi.x, roi.y);     
        cvSetImageROI(img_copy, roi);
        cvRectangle(img_copy, cvPoint(roi.x,roi.y), cvPoint(roi.x+roi.width, roi.y+roi.height), color, CV_FILLED);
        cvResetImageROI(img_copy);
        indexLines=indexLines+width/regionPerLine;
    }
    cvShowImage("img", img);
    cvShowImage("img_copy", img_copy);

    cvWaitKey(0);

    cvDestroyWindow("img");
    cvDestroyWindow("img_copy");
    cvReleaseImage(&img);
    cvReleaseImage(&img_copy);

    return 0;
}

色を変更してROIの変化を確認しますが、それらを表示しようとすると(そして、いくつかの色の長方形を取得しようとすると)、画像の左上に1つの青しか表示されません。つまり、最初の青が選択されていると思いますが、他ではありません。ただし、printf関数でインデックスを表示すると、必要なすべてのインデックスが必要に応じて十分に増加します。

誰かが何が起こるか知っているなら、私に知らせてください。

ありがとう

4

0 に答える 0