我想使用自定义类型创建一个cv::Mat数组。以下是我的代码:
typedef struct{
int x;
int y;
float prob;
}CellXY;
void main(){
cv::Mat_<CellXY> map(10, 10);
std::cout << "Width = " << map.cols << ", Height = " << map.rows << std::endl;
std::cout << "### Assignment ###" << std::endl;
for (int j=0; j<map.rows; j++){
for (int i=0; i<map.cols; i++){
map.at<CellXY>(j, i).x = i;
map.at<CellXY>(j, i).y = j;
map.at<CellXY>(j, i).prob = (float)(i + j * map.cols);
std::cout << map.at<CellXY>(j, i).prob
<< " (" << map.at<CellXY>(j, i).x
<< "," << map.at<CellXY>(j, i).y
<< ")\t";
}
std::cout << std::endl;
}
std::cout << "### Display ###" << std::endl;
for (int j=0; j<map.rows; j++){
for (int i=0; i<map.cols; i++){
std::cout << map.at<CellXY>(j, i).prob
<< " (" << map.at<CellXY>(j, i).x
<< "," << map.at<CellXY>(j, i).y
<< ")\t";
}
std::cout << std::endl;
}
map.release();
}
然而,“任务”和“展示”部分之间的结果并不相同:
namespace cv
中...请参见编辑。cv::Vec3f
;)CellXYMatrix
类将是微不足道的。但是,只要您100%确定OpenCV函数与您的自定义数据类型配合良好,我想您就是安全的;) - Miki