Handson opencv!...

14
画像処理ライブラリを使って面白いプログラムを作ろう! 長崎県立大学 国際情報学部 情報メディア学科 吉村ゼミ

Transcript of Handson opencv!...

Page 1: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

画像処理ライブラリを使って面白いプログラムを作ろう!

長崎県立大学 国際情報学部 情報メディア学科 吉村ゼミ

Page 2: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

先週やったこと

• サンプルプログラムを動かす

Page 3: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

今週やること

• サンプルプログラムについての解説

• インサイトカメラの映像を取得する

Page 4: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

エラーが出る場合は言ってください

1. 「msvcr100d.dllが見つからなかったため~…」 →http://www.microsoft.com/ja-jp/download/details.aspx?id=5555

2. いきなり500個くらいエラーが出る →残念ですがVisual Studioをインストールし直してください

3. その他OpenCV周りのエラー →環境変数を確認しましょう

Page 5: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

プログラムの説明(1)

• Cv::Matで画像を入れる変数を作ります

• コンピュータでは,画像は赤・緑・青の3つの光の強さで表現されます.

詳しくはマルチメディア演習を履修しよう!

Page 6: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

プログラムの説明(2)

• imread():画像ファイルをプログラムに読み込むための関数.先ほど作ったsrc_imgという画像を入れるための箱に,実際に画像を入れている

• namedwindow():実際に画像を表示するためのウィンドウを用意する

• imshow():imread()で読み込んだ画像を表示する関数.表示に使用するウィンドウはnamedwindow()で用意したものを使う.

• waitkey():指定のキーが入力されるまでプログラムを停止する.

Page 7: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

カメラで映像を撮影する プログラム

Page 9: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

include文とmain関数を書く

#include <iostream>

#include <opencv2/opencv.hpp>

#include <opencv2/opencv_lib.hpp>

#include <opencv2/highgui/highgui.hpp>

using namespace cv;

using namespace std;

int main(void){

// このなかにプログラムを書いていきます

}

Page 10: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

USBカメラへのアクセス

main関数の中に

VideoCapture capture(0);

// カメラが使えない場合はプログラムを止めるif(!capture.isOpened())

return -1;

Page 11: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

VideoCaptureクラス

• コンピューターで認識されているインカメラ,USBカメラにアクセスする為に必要な機能を定義している

• ここではVideoCaptureの構造を持つ箱として,captureを宣言しました

クラスに関する詳しい説明をドキュメントの下部に書いています.

是非参考にして下さい.

Page 12: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

取得した映像をウィンドウに表示する(1)

Mat frame, src_video;

char windowName[] = "カメラでさるくマップを撮影してね!";

namedWindow(windowName, CV_WINDOW_AUTOSIZE);

while(WaitKey(1) == -1){

capture >> frame;

src_video = capture;

imshow(windowName,src_video);

}

destroyAllWindow();

return 0;

Page 13: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

取得した映像をウィンドウに表示する(2)

While分の中身では,

1. captureで取得したカメラの映像をframeに入力する

2. src_videoにframeの画像をコピーする

3. src_videoの画像を,windowNameという名前のウィンドウで表示をする

4. 1~3の処理を,キーボードのキーが押されるまで繰り返す

という処理を行っています

Page 14: Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その3

来年やること

1. 色空間ってなんだろう?

2. 映像から特定の色を抽出してみよう