我开始学习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 char
而num_pixels
是像素数图像。
有人可以告诉我如何使用此方法使用此cv::Mat
类型。我希望有一些简单的方法来获取底层数组及其类型,而无需将数据复制到临时数组,但我不确定。我总是可以假设正在读取的视频图像总是转换为灰度。
答案 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]
投射到合适的类型。