我从库中的函数获取缓冲区。它应该是一个图像缓冲区。我使用OpenCV的函数cv::imdecode(...)
将其转换为cv::Mat
。有时在我获取缓冲区之前删除了图像,所以在这种情况下我希望缓冲区为空,但我发现它包含.xml
,其中包含某种未找到图像的消息。那么:有没有办法验证缓冲区是否包含.xml
而不是.jpg
?或者如何验证这个?
修改
根据评论,我想搜索缓冲区是否以"<?xml"
开头。
imgOut = cv::imdecode(imgBuf, CV_LOAD_IMAGE_COLOR);
if (imgOut.empty())
{
std::string xmlStart = "<?xml";
std::string bufStart(imgBuf.begin(), imgBuf.begin() + 5);
if (bufStart == xmlStart)
{
throw ImageNotAvailableException()
}
throw ImageDecodeException(bucketNameIn, objectNameIn);
}
如果解码失败, cv::imdecode
将返回空cv::Mat
。可以这样做(imgBuf
是std::vector< uchar >
)吗?
答案 0 :(得分:0)
可能你可以查看jpeg标题。
根据这篇文章,jpeg标题以(FFD8)开头 http://www.fastgraph.com/help/jpeg_header_format.html