c++ - 如何在OpenCV中获取Freeman链码?

标签 c++ opencv

我正在尝试使用 findCountours 函数获取 Freeman 链码,但我无法理解它的参数,并且在 OpenCV documentation 中没有对每个参数给出解释。 .

谁能帮帮我?

最佳答案

使用此功能,您将从弗里曼链获得轮廓。它不会给你自由人链,它会把它作为输入。

我不知道为什么在当前版本的 OpenCV 中没有 cv::CHAIN_CODE(它等于 0),但我已经检查过

vector<vector<cv::Point>> c;
cv::findContours(Img,c,RETR_EXTERNAL,0 );

效果很好。并给出轮廓的完整弗里曼代码。

您也可以使用这个旧的 API 代码:

CvChain* chain=0;
CvMemStorage* storage=0;
storage=cvCreateMemStorage(0);
cvFindContours( &IplImage(Img), storage, (CvSeq**)(&chain), sizeof(*chain), CV_RETR_EXTERNAL, CV_CHAIN_CODE );

for(;chain!=NULL;chain=(CvChain*)chain ->h_next) 
{   
    //chain=(CvChain*)chain ->h_next; 
    //if(chain==NULL){break;}
    CvSeqReader reader; 
    int i, total = chain->total; 
    cvStartReadSeq((CvSeq*)chain,&reader,0); 
    printf("--------------------chain\n"); 

    for(i=0;i<total;i++) 
    { 
        char code; 
        CV_READ_SEQ_ELEM(code, reader); 
        printf("%d",code); 
    } 
}

关于c++ - 如何在OpenCV中获取Freeman链码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22326412/

相关文章:

c++ - 是否可以将重载的提取运算符与重载的算术运算符级联?

c++ - 使用 `std::vector` 时 `std::unique_ptr` 中的数据不同

c++ - 将图像包含到标签中

python-2.7 - OpenCV - 使用python从字符串中提取字母

c++ - 为什么我的 Gdiplus::Bitmap 不能保存文件

python - 在 Raspberry Pi 终端上使用 Python 中的 OpenCV 显示图像

C++ 从值数组中保存图像的快速方法

C++ 为什么 ofstream 指向的文件未填充?

c++ - 关于数据对齐的困惑

可变大小数组的 C++ 数组