我们有一些 2d 数据解析器,它接收大小为 8x8 (roiSize=8) 的图像,这些图像通过以下方式发送到我们的解析器:
void UseOurParser(IplImage* destination)
{
int w = destination->width;
int h = destination->height;
original = cvCreateImage(cvSize(w, h),IPL_DEPTH_8U,1);
cvCvtColor(destination,original,CV_RGB2GRAY);
cout << endl << "Progress:";
for(int j = 1; j < original->width/roiSize-1; j=j++) {
cout << "." ;
for(int i = 1; i < original->height/roiSize-1; i=i++) {
cvSetImageROI(original, cvRect(j*roiSize, i*roiSize,roiSize, roiSize));
IplImage *cropSource = cvCreateImage(cvGetSize(original), original->depth, original->nChannels);
cvCopy(original, cropSource, NULL);
ProcessOurParser(cropSource, j, i);
cvResetImageROI(original);
}
} //...
我们的解析器获取图像 j, i 并在其中确定是否在图像上找到对象。如果它被发现,它会执行另一个操作来确定一些特征值(一些浮点数)。我想以某种方式创建我的数据的 2d 表示(大小如 (original->width/roiSize-2) X (original->height/roiSize-2)),因此对于每个 roi,我都有一个值声明 if feature是否在其中找到,如果它是它的特征值。我需要的是能够遍历生成的数据。并实现某种区域松鸡算法,以便如果一个 roi 上的特征 == 以另一个是围绕它的 8 个之一的特征,我们会以某种方式增长区域并一次又一次地检查,以便我们找到区域......
因此,如果我们正在搜索线条并且我们的特征对于线条存在和角度浮动来说是布尔值(就像我一样),我们会做类似的事情
1)(我们站在蓝色 1 和 2 黄色 1 是我们的兴趣点)
我们向我们的“行”提交了 2 个区域并继续搜索
我们发现一个 roi 上的 hat 特征与我们的线有关,而另一个与我们的线无关,所以我们稍后会回到那个 roi
那么在提升如何做这样的事情或您可以提供的任何代码帮助方面有什么帮助吗?