スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

プログラム大好きっ子がPythonに興味を持ったようです。Part5

平日更新第5弾!平日はPythonの日。
絵を描けよとか言われそうで、あんまり言われないので今日も今日とてPythonプログラミング。
先日予告した通り、今回はカメラを使ったプログラムを紹介します。


拡張は明日やるとして今回の内容はこちら。

・カメラから画像を取得し、表示。
・カメラの画像を保存。

実行イメージ(というより保存した画像)
frame_image.jpg

では早速ソースコードを見てみましょう。
驚くほど短いのがOpenCVのすごいところ。
#cam_test.py

001:#coding:shift_jis
002:
003:from opencv import highgui
004:from opencv import cv
005:
006:wnd_name = "カメラテスト"
007:
008:#接続されているカメラの中で一番最初のものを取得
009:cam = highgui.cvCreateCameraCapture(0)
010:
011:highgui.cvNamedWindow(wnd_name , highgui.CV_WINDOW_AUTOSIZE)
012:
013:while 1 :
014:
015: frame = highgui.cvQueryFrame(cam)
016: highgui.cvShowImage(wnd_name , frame)
017: key = highgui.cvWaitKey(1)
018:
019: #sキーで今の画像を保存します(最新版を上書き)
020: if key == 's':
021: highgui.cvSaveImage("frame_image.jpg" , frame)
022: print "フレームを保存しました。
023:"
024: #qキーで終了。
025: elif key == 'q':
026: break
027:
028:highgui.cvDestroyWindow(wnd_name)
029:highgui.cvReleaseCapture(cam)
030:


非常に短い頻度で画像を更新することで、動画を実現しています。
なお、実行には利用可能なWebカメラが必要です。

接続が正しければ、プログラムの実行と同時にカメラが起動します。

あと、frameは開放しないの?って思った方へ
マニュアル曰く取得したフレームはこちらで開放してはならないらしいんだけど
他所のサンプルコードでも開放しているコードをちょくちょく見かけました。
Cだと確かcvCaptureの開放と画像の開放が重複してしまいメモリアクセス違反になります。
pythonの挙動だと落ちたりはしないので気がつかないんですが、ちゃんとpythonのマニュアルの方にも
注意書きがあるのを見る限りやっぱり、あまり行儀の良いことじゃないみたいです。

以下、OpenCV2.0のドキュメントからQueryFrameの説明から引用********
関数 cvQueryFrame は,カメラやビデオファイルから一つのフレームを取り出し,
それを展開して返す.この関数は,単純にcvGrabFrame とcvRetrieveFrame を
まとめて呼び出しているだけである.

返された画像は,ユーザが解放したり,変更したりするべきではない.
*************************************************************

ということは画像処理もframeをコピーするなりして、別の画像に対して行うべきなワケです。
そこら辺を加味しつつ、フィルタリングの練習も兼ねて、次回、カメラ画像を弄り回します。

しかし、マニュアルにカメラの指定は-1でも良いことがあるとか書いてあるからやったら
プログラム、クラッシュしたしなぁ。
信じるべきは実行結果が全てということか・・・なんちって。


しっかし・・・プログラムより顔隠すのが面倒です。

今回のプログラムは以上。

何度目の言い訳か分からないですが、イラストもなんとか更新します。
GWに期待!・・・・暇なGWってのも切ないものがあるけどね。

そんなこんなで、また次回。
スポンサーサイト

コメントの投稿

非公開コメント

twitter
    follow me on Twitter
    プロフィール

    砂塵

    Author:砂塵
    GIMP2でお絵描きしています。
    主にイラスト練習、プログラミングなどを扱っているブログです。

    Skype始めました。
    SkypeID:sazinn-gimp
    出没時間:平日21~26時、休日(土・日)

    Pixivはじめました
    微エロな絵を載せることがありますので、そういうのが苦手な方や嫌悪感を覚える方はご注意ください。

    カテゴリ
    リンク
    最新記事
    月別アーカイブ
    最新コメント
    RSSリンクの表示
    FC2カウンター
    FC2ブログランキング

    FC2Blog Ranking

    参加ブログカテゴリ
    にほんブログ村 IT技術ブログ プログラム・プログラマーへ
    にほんブログ村 イラストブログ イラスト練習へ
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。