gpt4 book ai didi

C++ 如何创建简单的二维区域松鸡算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:37 31 4
gpt4 key购买 nike

我们有一些 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 并在其中确定是否在图像上找到了对象。如果找到它,它会执行另一个操作来确定一些特征值(一些 float )。我想以某种方式创建我的数据的二维表示(大小如 (original->width/roiSize-2) X (original->height/roiSize-2)) 所以对于每个 roi 我都有一个值声明如果功能是否在其中找到,是否是它的特征值。我需要的是能够遍历生成的数据。并实现某种区域松鸡算法,以便如果一个 roi 上的特征 == 到另一个 roi 上的特征,即它周围的 8 个之一,我们会以某种方式增长区域并一次又一次地检查,以便我们找到区域......

因此,如果我们正在搜索直线并且我们的特征是直线存在和角度 float 的 bool 值(就像我所做的那样),我们会做类似的事情

1)(我们站在蓝色1和2个黄色1上是我们感兴趣的点)

enter image description here

我们向我们的“行”提交了 2 个区域并继续搜索

enter image description here

我们发现一个 roi 上的帽子特征与我们的线有关,而另一个则不是,所以我们稍后会回到那个 roi

enter image description here

那么对于如何做这样的事情有什么帮助吗?或者您可以提供任何代码帮助?

最佳答案

我没有花任何时间研究 Grouse 算法,但我想您可以将 STL 容器( vector 、散列等)和自定义类的组合用于您的结构(图像、rois、地区等)。

例如:

  • imageRoiHash(key=rowIndex, value=roi) , 或 imageRoiHash(key=rowIndex, value=vector<roi>) .我不知道每个图像行是否可以有一个或多个 rois。
  • A roiClass(bool found, TValue value) . TValue是一个 int、一个字符串或另一个类。然后你可以处理你的图像,并使用 hash[rowIndex] 获取每行中的 rois。

或者:

  • imageRoiList(std::vector<roi>) , 或 imageRoiList(std::vector<std::vector<roi>) .这是一个 2D 结构,您可以在其中保留每个图像行的 roi 或 rois。

关于C++ 如何创建简单的二维区域松鸡算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972930/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com