簡體   English   中英

如何驗證無符號字符緩沖區是圖像還是XML?

[英]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 這樣做是否可以( imgBufstd::vector< uchar > )?

可能您可以檢查jpeg標頭。

根據本文,jpeg heder以(FFD8)開始http://www.fastgraph.com/help/jpeg_header_format.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM