我正在尝试使用此构造函数从我在内存中分配的一些数据创建一个 Mat 对象。
C++: Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)
我对 C++ 相当陌生,所以如果我在某处犯了基本错误,请记住这一点。基本上我想做的是显示来自原始视频文件的图像。为此,我从文件中读取数据并将其分配到内存中。
struct videoFrame{
float frameTime;
unsigned short int year, day, msec;
unsigned char hour, min, sec;
unsigned short int mFrame[SIZE];
};
...
//seek to first frame
vfs.seekg(2560, ios_base::beg);
int pos;
for(pos=0; pos<SIZE;pos++){
vfs.read( (char*) &mVideoFrame1->mFrame[pos], sizeof(short));
}
Mat mImage1( Size(WIDTH, HEIGHT), CV_16UC1, mVideoFrame1->mFrame, HEIGHT * 2);
namedWindow("Frame 1", CV_WINDOW_AUTOSIZE);
imshow("Frame 1", mImage1);
waitKey(0);
我已经能够从文件中读取数据......例如帧和视频标题。我想我可能不清楚构造函数是如何工作的。如果有人可以提供一些见解,那就太好了。当我在namedWindow中显示框架时,它全是黑色的。
顺便一提...
const int HEIGHT = 512;
const int WIDTH = 640;
const int SIZE = HEIGHT * WIDTH * 2;
第一帧的原始数据是 512x640 16bit unsigned little Endian byte order black and white。