如何验证unsigned char缓冲区是image还是xml?

时间:2014-08-07 07:48:41

标签: c++ opencv

我从库中的函数获取缓冲区。它应该是一个图像缓冲区。我使用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。可以这样做(imgBufstd::vector< uchar >)吗?

1 个答案:

答案 0 :(得分:0)

可能你可以查看jpeg标题。

根据这篇文章,jpeg标题以(FFD8)开头 http://www.fastgraph.com/help/jpeg_header_format.html