opencvはgifに対応してなかった
import cv
img = cv.LoadImage('sample.gif')
こんな感じでcv.LoadImageでgif画像を読み込もうとすると以下のようなエラーが出る
$ python test3.py sample.gif
Traceback (most recent call last):
File "test3.py", line 2, in <module>
img = cv.LoadImage('sample.gif')
IOError: [Errno 2] No such file or directory: 'sample.gif'
表題の通りにopencv でgifを使うには
cv2を使う。エラーはでない。
import cv2
img = cv2.imread('sample.gif')
しかし、世の中には古い環境などでimport cv
しか使えないつらい時がある。
opencvのマニュアルを見ると、PIL Imageからopencvに変換するにはというのがあって、これを利用してみる
from PIL import Image
import cv
sample = Image.open('sample.gif')
cv_im = cv.CreateImageHeader(sample.size, cv.IPL_DEPTH_8U, 3)
cv.SetData(cv_im, sample.tostring())
print sample.size, cv.GetSize(cv_im)
(868, 600) (868, 600)
>>> print sample.tostring() == cv_im.tostring()
False
gif画像のsizeは取得できたが、同じデータに変換は出来なかった
gifをcvでどうしても取り扱いたかった時どうしたか
gifをjpgに変換することで逃げた ┗(^o^ )┓三
以下のようにPILを使って、sample.gif
をjpgに変換してconvertfromgif.jpg
として保存したものを利用するようにした
from PIL import Image
im = Image.open('sample.gif').convert('RGB').save('convertfromgif.jpg')