OpenCV:将图像数据作为数组获取

时间:2014-10-05 19:40:43

标签: opencv

我开始学习OpenCV,并且在一些基本操作方面遇到了一些麻烦。所以,我可以按如下方式阅读视频文件:

cv::VideoCapture cap("media.avi");
cv::Mat imgNew;
while (cap.read(imgNew)) {
}

现在,我有另一个具有以下签名的函数:

template<class T> 
bool get_estimate(const T * image_data, int num_pixels)

现在,这会将图像数据作为const T类型的线性数组,其中T在这种情况下可能是unsigned charnum_pixels是像素数图像。

有人可以告诉我如何使用此方法使用此cv::Mat类型。我希望有一些简单的方法来获取底层数组及其类型,而无需将数据复制到临时数组,但我不确定。我总是可以假设正在读取的视频图像总是转换为灰度。

1 个答案:

答案 0 :(得分:1)

OpenCV中的Mat类有一个uchar *data成员,可用于访问基础数据。 OpenCV Mat.

Mat myImg;                       //assume single channel 2D matrix.
unsigned char *p;
p = myImg.data;
for( unsigned int i=0; i< myImg.cols*myImg.rows; i++ )
    std::cout<< p[i];

p[i]投射到合适的类型。