teppay’s log

セキュリティ、CTF、機械学習などに興味があります。情報系学生です。興味のあることを思い立った時に書きます。曖昧なことの整理にも使います。月1が目標です。

Python-OpenCVのimreadでハマった ~gif画像まざってない?~

環境

  • MacBookPro late 2016
  • Python3.6.1
  • OpenCV3.2.0

状況

  • OpenCVで顔検出するサンプルを実行してみた。
  • 意味不明なエラーが出た

解決方法

コードの一部、

import cv2

def face_detect(path, file_name):
    img = cv2.imread(path) #here
        #to be continued...

当該エラーは、

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /Users/travis/build/skvark/opencv-python/opencv/modules/core/src/array.cpp, line 2501

ちなみに/Users/travisの部分にも心当たりがありません。

このエラーをそのまま検索して出るサイトは、「画像のパスをミスってると出るエラーだよ」って言うサイトが多いんですけど、自分の場合は間違っていませんでした。

結果

いろいろ検証した結果、gif画像をimreadしようとすると、当該エラーが出ることがわかりました。 僕は、通信をキャプチャして、その通信から画像を取り出したものを読み込もうとしていたのでgif画像が混ざっていたみたいです。

反省

ちゃちゃっと書いたので、だいぶてきとーになりました。
もし読んでくれた人がいた場合すみません。なんかあれば聞いてください。