我想以 .pgm 格式保存实时视频的每一帧。我正在使用 c++ 中的 opencv 2.4.8。我的问题是,尽管所有帧都以正确的格式(例如 frame_1.pgm)保存并且在现象上是正确的,但当我打开它们时,它们不是灰度的,因为 .pgm 照片应该是。此外,我用 hexeditor 打开图像并将它们与正确的 pgm 照片进行比较,并且存在明显差异!有人可以就我做错了什么提供任何建议吗?
这是我的代码的关键部分:
///////////////////////////////////////// ////////////
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PXM_BINARY);
compression_params.push_back(0);
captureDevice1>> captureFrame1;
imwrite("frame_55.pgm",captureFrame1,compression_params);
//string imagename=argv[2];
string imagename="frame_";
//string imagename="frame_";
char numberfile[17];
sprintf_s(numberfile,17,"%u",im);
imagename+=numberfile;
imagename+=".pgm";
std::ifstream in( imagename.c_str(), std::ios::binary );
if ( !in )
{
std::cout << "Error in Image: " << imagename << std::endl;
continue;
}
in.close();
///////////////////////////////////////// ///////////////////
现在,如果我尝试加载图像:frame_55.pgm,我会收到“不支持的格式”错误,而它与其他 .pgm 图像一起工作正常!!
Thnx提前伙计们为您的时间!