在OpenCV中,CV_8U和CV_8UC1有什么区别?它们都是指一个具有一个通道的8位无符号类型吗?如果是,为什么会有两个名称?如果不是,它们之间有什么区别?
CV_8UC1
因为它可以使我的代码更清晰地了解我正在处理多少个通道。#define CV_MAT_ELEM_CN( mat, elemtype, row, col ) \
(*(elemtype*)((mat).data.ptr + (size_t)(mat).step*(row) + sizeof(elemtype)*(col)))
...
CvMat *M = cvCreateMat(4, 4, CV_32FC(10));
for(int ch = 0; ch < 10; ch++) {
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
CV_MAT_ELEM_CN(*M, float, i, j * CV_MAT_CN(M->type) + ch) = 0.0;
cout << CV_MAT_ELEM_CN(*M, float, i, j * CV_MAT_CN(M->type) + ch) << " ";
}
}
cout << endl << endl;
}
cvReleaseMat(&M);
参考资料:http://note.sonots.com/OpenCV/MatrixOperations.html