2012-07-17 57 views
7

私はcv2.imread()を使って読み込んだイメージを持っています。これは、NumPy配列を返します。しかし、これをIplImage形式のデータが必要な第三者APIに渡す必要があります。OpenCV:PythonでNumPyからIplImageに変換する

IplImageからCvMatへの変換の例が見つかりました.C++での変換にはいくつかの参照が見つかりましたが、NumPyからPythonのIplImageへの変換は見つかりませんでした。この変換を行うことができる機能はありますか?

+0

であることがnumpyのでいいです - > CvMatの? –

答えて

14

このようにすることができます。ここ

source = cv2.imread() # source is numpy array 
bitmap = cv.CreateImageHeader((source.shape[1], source.shape[0]), cv.IPL_DEPTH_8U, 3) 
cv.SetData(bitmap, source.tostring(), 
      source.dtype.itemsize * 3 * source.shape[1]) 

bitmapcv2.cv.iplimage

+0

Froyoありがとう、これは私にIplImageを取得しますが、イメージが破損しているようです。 cv.CreateImageHeaderとcv.SetDataを使用する代わりに、私はcv2.cv.CreateImageHearderとcv2.cv.SetDataを使用しています。違いがあると思いますか? – steve8918

+3

実際に私はそれを理解しました。変換しようとしていたタイルはBGRではなくバイナリでした。そのため、それが壊れていたのです。だから私は3に1を変更し、それは完全に働いた。正しい方向に向いてくれてありがとう。他の誰かがそれを必要とする場合は、OpenCV Cookbookにhttp://opencv.willowgarage.com/wiki/PythonInterface/での変換方法に関する情報があります。 – steve8918

関連する問題