Convertendo matriz OpenCV em loop para JavaCV

Obtenha o livro 'Learning OpenCV' de O'Reilly há pouco tempo e, desde então, tenho estado ocupado convertendo todo o código de exemplo que vejo lá do OpenCV para JavaCV, geralmente seguido também por um pouco da minha própria modificação. Durante todo o tempo, estou tentando manter o máximo de código OpenCV (linguagem C) o máximo possível e evitar o Java. Por exemplo, implementei todos os elementos da interface diretamente por meio do pacote OpenCV highgui no JavaCV, em vez de via Java Swing. Ao fazer isso, espero aprender a biblioteca OpenCV e um pouco de C em uma ordem relativamente curta, além de estabelecer uma biblioteca de funções úteis que poderei converter facilmente em C se decidir mudar posteriormente para o OpenCV pur

e qualquer forma, tenho pouco conhecimento de C e, às vezes, tenho problemas ao lidar com indicadores. O livro recomenda o seguinte código como um meio ideal para iterar através de uma matriz de 3 canais:

float sum( const CvMat* mat ) {
    float s = 0.0f;
    for(int row=0; row<mat->rows; row++ ) {
        const float* ptr = (const float*)(mat->data.ptr + row * mat->step);
        for( col=0; col<mat->cols; col++ ) {
            s += *ptr++;
        }
    }
    return( s );
}

Aqui está a explicação incluída para este código:

Ao calcular o ponteiro na matriz, lembre-se de que os dados do elemento da matriz são uma união. Portanto, ao remover a referência desse ponteiro, você deve indicar o elemento correto da união para obter o tipo correto de ponteiro. Então, para desativar esse ponteiro, você deve usar o elemento step da matriz. Como observado anteriormente, o elemento step está em bytes. Para segurança, é melhor fazer a aritmética do ponteiro em bytes e, em seguida, converter no tipo apropriado, nesse caso, float. Embora a estrutura CVMat tenha o conceito de altura e largura para compatibilidade com a estrutura IplImage mais antiga, usamos as linhas e colunas mais atualizadas. Por fim, observe que recalculamos ptr para cada linha, em vez de simplesmente começar do início e depois incrementar esse ponteiro a cada leitura. Isso pode parecer excessivo, mas como o ponteiro de dados do CvMat pode apenas apontar para um ROI em uma matriz maior, não há garantia de que os dados sejam> contíguos nas linhas.

No entanto, estou tendo problemas para convertê-lo para JavaCV. O campo ptr (ponteiro) parece ser um ponto flutuante, o que me confunde. Presumo que não seja realmente um 'ponteiro', mas um valor ao qual o valor de cada pixel é adicionado? Ou é realmente um ponteiro, cujo valor s encontra a soma total de todas as colunas em uma determinada linha?

De qualquer forma, eu ficaria grato se alguém postasse para mim algum código JavaCV para um loop equivalente. Sei que existem outras maneiras de acessar todos os pixels em um CvMat, mas o AFAIK são todos menos eficientes ou impreciso