代码之家  ›  专栏  ›  技术社区  ›  Anthony McCormick

简单的iPhone图像处理源代码问题,这有什么作用?

  •  1
  • Anthony McCormick  · 技术社区  · 16 年前

    我正在浏览上述项目的源代码,我不理解下面的代码行,有人能帮我解释一下吗?我试图让代码处理彩色图像,因为它目前只处理灰度图像。我有主要的工作方法,但是过滤器只适用于返回图像的前四分之一。

    //在heeder文件中。

    inline uint8_t* operator[](const int rowIndex) {
        return m_yptrs[rowIndex];
    }
    

    //在.mm文件中

    void Image::initYptrs() {
    m_yptrs=(uint8_t **) malloc(sizeof(uint8_t *)*m_height);
    for(int i=0; i<m_height; i++) {
        m_yptrs[i]=m_imageData+i*m_width;
        }
    }
    

    根据我的理解,它看起来像是在创建对图像中像素的引用,但是我不理解这行代码。

    m_yptrs[i]=m_imageData+i*m_width;
    

    事先谢谢。

    1 回复  |  直到 16 年前
        1
  •  4
  •   Frunsi    16 年前

    Image::initYptrs() 初始化指向图像每行开头的指针数组。

    这句话应该是

    m_yptrs[i] = m_imageData + i*BPP*m_width;
    

    其中bpp是每像素字节数(例如,对于rgb为3,对于rgba图像为4)。

    推荐文章