Cv do OpenCV :: Alinhamento de linhas Mat & CvMat
poderia alguém pls me explicar como o alinhamento de linha do @ da OpenCvMat
(ou sua versão C ++cv::Mat
) trabalho? Por exemplo, vamos assumir que eu tenho uma matriz
CvMat *cvmat = cvCreateMat(2,3,CV_8UC1);
cvSet2D( cvmat, 0, 0, cvScalar(1) );
cvSet2D( cvmat, 0, 1, cvScalar(2) );
cvSet2D( cvmat, 0, 2, cvScalar(3) );
cvSet2D( cvmat, 1, 0, cvScalar(4) );
cvSet2D( cvmat, 1, 1, cvScalar(5) );
cvSet2D( cvmat, 1, 2, cvScalar(6) );
De acordo com a documentação deCvMat
, as linhas devem ser alinhadas por 4 bytes, ou seja, a primeira linha da matriz deve ser preenchida com um zero e a segunda deve começar no deslocamento +4). No entanto, se eu depurar esse trecho de código, os dados serão contínuos (ou seja,cvmat->data
é[1,2,3,4,5,6]
) e não vejo alinhamento de 4 bytes. Isso é um bug na documentação e é sempre seguro assumir a continuidade dos dados deCvMat
oucv::Mat
(no caso em que a matriz não faz parte de outro ofc)? Ou existem algumas configurações especiais nas quais pode haver algumas lacunas nos dados como resultado do alinhamento da memória?