opencv中的Mat数组类型用起来非常方便,但是我经常用到的两种由坐标获取像素灰度值的方式为
Mat img;
img.at<uchar>(i,j)
//或者指针方式
img.ptr<uchar>(I,j)
都需要指定具体的类型。
于此相关的更多细节可以参考这篇文章:【OpenCV】访问Mat中每个像素的值(新)
http://blog.csdn.net/xiaowei_cqu/article/details/19839019
但是,对于所定义的情况较为复杂的类型所对应的像素类型该如何得到呢?
如定义了,Mat img(Size(3,3),CV_32S);
相关的文章有根据所定义图像类型去确定像素值类型的,比如
OpenCV不同类型Mat的at方法访问元素时该如何确定模板函数的typename http://blog.csdn.net/xxyhjy/article/details/45485619
确定 OpenCV 矩阵元素的数据类型 http://blog.csdn.net/u013021895/article/details/52045410
我在碰到这种情况的时候,不管是img.at<int>还是img.at<long>都不能得到CV_32S(他是32位整形)。
如果有人遇到了这种情况,可以试一试下面的方法:img.at<__int>。其他类似的应该是相通的。
我对此没有深入研究,是自动补全方法中提供的一个方案。现在暂且记下,有时间或有人看到能更多了解一些。mark--2017年11月4日20:50:24