0

我尝试在图像上循环创建多个 ROI(它们的数量可以更改),但系统似乎只能选择一个。我需要它,因为我将尝试制作一个 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 的变化方式,但是当我尝试显示它们(并获得几个颜色矩形)时,我在图像的左上角只获得一个蓝色,这意味着我认为第一个被选择但是不是其他人。但是,当我在 printf 函数中显示我的索引时,所有需要的索引都会按照我的意愿增加。

如果有人知道会发生什么,请告诉我。

谢谢

4

0 回答 0