我已经阅读了一些关于Mat元素访问的帖子并进行了一些试验,但都失败了。有人能给我一个暗示吗?
Mat vect(1,3, CV_32FC1);
typedef Vec<float,1> Vec1f; //**
// access ele. at (1,1)
vect.at<Vec1f>( Point(1,1 )) = 5; // I used 1 channel so I defined a new element type as a workaround
我改编了这篇文章中的代码 opencv multi channel element access
而且,虽然这行// **可以声明为:
typedef Vec<float> Vec1f;
根据core.hpp中的第582行:Vec(_Tp v0); //&LT!; 1元素向量构造函数
但是,它也不起作用
我对2D矩阵应用了相同的方法,然后就可以了:
Mat warp_mat(2,3, CV_32FC1);
typedef Vec<float,1> Vec1f;
warp_mat.at<Vec1f>( Point(0,0 )) = 1;
warp_mat.at<Vec1f>( Point(1,0 )) = 2;
warp_mat.at<Vec1f>( Point(2,0 )) = 5;
warp_mat.at<Vec1f>( Point(0,1 )) = 4;
warp_mat.at<Vec1f>( Point(1,1 )) = 5;
warp_mat.at<Vec1f>( Point(2,1 )) = 0;
它运作正常!
答案 0 :(得分:0)
http://aishack.in/tutorials/opencvs-c-interface/
Mat a = Mat(4,3,CV_32FC1);
float elem_a = a.at(i,j); //访问元素aij,i从0到 rows-1和j从0到cols-1