下载了一个分水岭算法的代码,函数为
函数名 : Watershed
 功能 : 用标记-分水岭算法对输入图像进行分割
 算法实现 : 无
 输入参数说明 : OriginalImage --输入图像(灰度图,0~255)
   SeedImage     --标记图像(二值图,0-非标记,1-标记)
   LabelImage    --输出图像(1-第一个分割区域,2-第二个分割区域,...)
   row           --图像行数
   col           --图像列数
 返回值说明
函数void Watershed(const int **OriginalImage, char** SeedImage, int **LabelImage, int row, int col)
,但不知道int **OriginalImage的定义是什么意思,直接定义后总是提示我定义不对。例子中的定义是这样的:unsigned char** ori_image;
       ori_image=alloc_uszchar_space(m_imageH,m_imageW);
但是alloc_uszchar_space编译器不认,求大人指点,急!

解决方案 »

  1.   

    就是指向指针的指针, 即二级指针 .
    例如, 
    char a[10] 在作为函数参数的时候, 可以写成 char *p, 用来表示一个字符串
    但是如果我想表示几个这样的字符串怎么办呢? 那就可以用二级指针 char *a[10];
      

  2.   

    指向指针的指针, 即二级指针 。谢谢
    请问这样的指针怎么初始化。就是函数参数为unsigned char** ori_image,
    在调用的地方定义unsigned char** ori_image;
           ori_image=alloc_uszchar_space(m_imageH,m_imageW);
    但是ori_image的初始化alloc_uszchar_space(m_imageH,m_imageW抱错,应该怎么做,
    理解上应该是1个动态二维数组。
      

  3.   

    初始化? 可以设置成 NULL 哦.
    unsigned char** ori_image = NULL;
      

  4.   

    但是后面程序会出错,因为定义unsigned char** ori_image后,后面要用到ori_image[i][j]这样的变量,不知道ori_image=alloc_uszchar_space(m_imageH,m_imageW)是什么意思,需要什么样的头文件?貌似分配了内存空间,然后后面就可以直接应用ori_image[i][j]的表达
      

  5.   

    我找到了,应该如下:    
            unsigned char** ori_image=NULL;
            ori_image=new unsigned char*[m_imageH];
            for(i=0;i<m_imageH;i++)
            ori_image[i]=new unsigned char[m_imageW];