Python 学習:imageデータ あれこれ

2014-05-22 :  PCクリニック
本文の前に、
-・・・ -・-
blogram「最新エントリのエコー」3日前の記事のままで止まっている???
現時点での、blogramのランクインカテゴリは、
3、2、2、1、0、 0、0、0、1、0(39)で、換算ポイント 63pt 。
「Firefox」今朝方、3位にダウン。
・-・ - -・

さて、本文。

画像データの様な、
バイト型(0~255)の整数データ(バイナリ・データ)のあれこれについて。


画像ファイルの扱いでは、
Python 学習:Image処理
で、「PIL」と云うか「Pillow」での入出力について書いた。

また。
Python 学習:OpenCV 入門
で、
読込みと表示について。
更に、そこで参照した「tataboxの備忘録」の「"opencv" - 記事一覧」にある、
OpenCVとPIL(python Image library)のデータ変換
には、OpenCV と、PIL 相互の変換について書いてある。


バイナリ・ファイルについては、
入力について、
「Portable Python」の時期でしたが、
Python 学習:tell、seek関数/バイナリファイル入力
で若干書いた。
出力については、
コード例は書いてないが、幾つかの記事で使っている。


そして、データの変換に関しては、
Python 学習:ctypes 実用化
で書いた、
Using array.array in Python ctypes
に、Numpy.array から ctypes 配列への変換がある。


更に、そのほかに見つけた、
NumPyのarrayとPILの変換 - white wheelsのメモ
には、PIL と、Numpy.array 相互の変換コード例があった。

それと、
「CS4243 Computer Vision and Pattern Recognition」
の、
Conversions between PIL, NumPy, OpenCV
は、極めつき???
  Conversions between Various Formats
  Read/Write Images with OpenCV
  Read/Write Images with PyOpenCV
  ・・・・・
  ・・・・・


これらを、<紙>流に整理した。


    先ずは、必要な import
import cv2 # OpenCV
from PIL import Image # Pillow
import numpy as np # Numpy.array
import ctypes # ctypes


画像ファイル入力 8bpp TIFF の例
・OpenCV形式
CVimage = cv2.imread( 'hoge.tif', cv2.CV_LOAD_IMAGE_GRAYSCALE )

・PIL形式
img = Image.open( 'hoge.tif' )
PILimage = img.getdata()

・Numpy.array形式
img = Image.open( 'hoge.tif' )
NParray = np.array( img.getdata(), np.uint8 )

バイナリ・ファイル入力
・Numpy.array形式
IN = open( 'hoge', 'rb' )
NParray = np.fromfile( IN, dtype=np.uint8 )


画像ファイル出力
・OpenCV形式
cv2.imwrite( 'hoge.tif', CVimage )

・PIL形式
PILimage.save( 'hoge.tif' )

バイナリ・ファイル出力
・Numpy.array形式
OT = open( 'hoge', 'wb' )
OT.write( NParray )

画像表示
・OpenCV形式
cv2.imshow( 'winnam', CVimage )

・PIL形式
PILimage.show()


OpenCV <---> PIL 形式変換
・PIL <--- OpenCV
PILimage = Image.fromarray( CVimage )

・OpenCV <--- PIL
CVimage = np.asarray( PILimage )


PIL <---> Numpy.array 形式変換
・Numpy.array <--- PIL
NParray = np.asarray( PILimage )

・PIL <--- Numpy.array
PILimage = Image.fromarray( np.uint8(NParray) )


Numpy.array ---> ctypes 形式変換
CTdata = np.arange( 3, dtype=ctypes.c_ubyte ) # 3 はダミー
CTdata = NPimage




本日はここまで。

Python 学習は続く、・・・


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140508
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク