Pythonで携帯電話のカメラを操作する

前回の記事では、S60用のPythonのインストールと対話型コンソールでの作業について見てきましたが、今日は携帯電話のカメラでPythonを使用する可能性について見ていきます。

それでは、始めましょう...



Pythonでカメラを操作するための特別なcameraモジュールがあります。 まず、カメラでサポートされている写真の解像度を取得します。
import camera
sizes = camera.image_sizes()

さらに、単にcamera.image_sizesをコンソールに書き込むと、カメラの解像度が2メガピクセル以下であるという非常に奇妙な結果が得られます。 カメラのフル「パワー」で写真を受信できるようにするには、最初にアプリケーションを横モード(水平)に転送する必要があります。
これを行うには、カメラを接続する前に、行appuifw.app.orientation = 'landscape'を追加する必要があります。
カメラのプレビューを有効にするには、このためにフォームのキャンバスを取得する必要があります: canvas = appuifw.Canvas()
また、プレビューを初期化するための小さな関数を準備する必要があります。
def cam_finder(im):
canvas.blit(im)


さて、これでプレビューアを安全に起動できます。
camera.start_finder(cam_finder, size=(320,240))
プレビューウィンドウのサイズは次のとおりです。サイズは任意です。

カメラから写真を撮る必要があります。そのため、中央のボタンに写真を撮る機能を追加します。
canvas.bind(key_codes.EKeySelect, take_picture)
ここに:
EKeySelectは、ジョイスティックの中央ボタンです。
take_pictureは、ボタンが押されたときに実行される関数です。次のように記述します。
まず、プレビューを無効にする必要があります。
camera.stop_finder()
最も重要なことは、カメラから写真を取得することです。camera.take_photo関数は、ズーム、フラッシュの使用、写真のサイズなど、多くのパラメーターを取ることができます。 写真のサイズのみを設定します。
pic = camera.take_photo(size = (cur_w,cur_h))

実際に追加したのは、カメラから写真を取得することです。 結果として、サイズ変更、保存、テキストの追加、単純な図形の描画などの基本操作をサポートするImageクラスのオブジェクトがあります。
結果のイメージを保存するために、ファイル名と1〜99のjpegの品質レベルを使用する保存機能が使用されます。
pic.save(filename, quality=75)

以下は、写真の解像度と詳細なコメントを選択できる小さなプログラムです。
画像
ソースコードをここに書くことはできませんでした。なぜなら、hubrは行頭のすべてのスペースを消費するためです。Pythonの場合は重要なので、コメントを付けてソースを見てください。


Source: https://habr.com/ru/post/J53549/


All Articles