[英]How to verify if an unsigned char buffer is image or xml?
我從庫中的函數獲取緩沖區。 它應該是圖像緩沖區。 我使用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 >
)?
可能您可以檢查jpeg標頭。
根據本文,jpeg heder以(FFD8)開始http://www.fastgraph.com/help/jpeg_header_format.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.