一张位图上有若干个互不相交封闭区域,怎样的算法能把这些区域区别的读出来?不是只读轮廓。谢谢!

解决方案 »

  1.   

    你好我也刚学VC,最近也在做这方面的学习研究,做的是视频的,一帧也是一幅画面,我的解决办法是编写一个相关的类专门处理这方面的,现在还在编写与测试阶段,欢迎交流,头文件如下:
    /**************************************************************************/
    /* CBytePlane类 *******************************/
    /* Byte平面像素点的类型 *******************************/
    /* *******************************/
    /* 作者: 李国庆 *******************************/
    /* 日期: 2007-4 *******************************/
    /* E-Mail: [email protected]  *******************************/
    /* E-Mail: [email protected] *******************************/
    /**************************************************************************/class CBytePlane
    {public: unsigned char* m_pbp; //指向像素点的数值区

    ////构造函数
    CBytePlane();
    CBytePlane(unsigned int L, unsigned int W );////析构函数
    ~CBytePlane();////返回指定像素区域的数据值
    unsigned char* GetPlane( unsigned int x, unsigned int y, unsigned int length, unsigned int width); //矩形像素区
    unsigned char* GetPlane( unsigned int x, unsigned int y, unsigned int squlth); //正方形像素区////返回指定像素点的值
    unsigned char GetByteAt( unsigned int x, unsigned int y);
    unsigned int GetLength();
    unsigned int GetWidth();////按要求清空指定区域,像素点置零
    void ClearPlane();
    void ClearPlane( unsigned int x, unsigned int y, unsigned int length, unsigned int width);
    void ClearPlane( unsigned int x, unsigned int y, unsigned int squlth);////释放指针指向的像素区占用的内存区
    void DeleteAll();////设置指定像素点的数值
    BOOL SetByteAt( unsigned int x, unsigned int y, unsigned char ch);
    BOOL SetByteAt( unsigned int x, unsigned int y, unsigned char *ps);////载入另一块的全部像素值到指定区域
    BOOL SetPlane( CBytePlane LoadPlane, unsigned int x, unsigned int y);
    BOOL SetPlane( unsigned char *ps , unsigned int x, unsigned int y, unsigned int length, unsigned int width );private: unsigned int m_length, m_width;
    };
    分块的函数还没有编写原始换面和分出来的画面的YUV分量都可以是这个类的对象