Presentation is loading. Please wait.

Presentation is loading. Please wait.

Kinectで画像処理 第2回.

Similar presentations


Presentation on theme: "Kinectで画像処理 第2回."— Presentation transcript:

1 Kinectで画像処理 第2回

2 今回の実験で使用するプログラムは、以下のものです
プログラムのソースは これからの演習には、この中のプログラムを使 用する。

3 KinectV2-Color-01.zipを解凍
今回はこのプロジェクトを用いる。 Kinectなどの複雑なものを扱うプログラムでは、 サンプルプログラムが公開されているので、そ れを修正するという使い方が普通

4 main.cpp maincolor.pdfで中 を理解しましょう

5

6 実行ファイル作成の際には、画像関係を扱うに は、Releaseモードで行ったほうが速い。
ここでモードを選んで、それぞれビルドする必 要がある。実行ファイルは、Release, Debug フォルダの中にできる。

7 Visual Studioプロジェクトの使い方
Kinect/K4W2-Book-master/C++(Native) フォルダを自分の PCに置く。 C++(Native) /01_Color/KinectV2-Color-01/KinectV2.slnをダブルク リック。 プロジェクト-NuGetパッケージ管理から、OpenCVを選 ぶ(versionは2.4.10)。 ビルド これで実行できれば、プログラム作成に進む。 このプロジェクトは、基本的にmain.cppのみなので、それ の説明を、maincolor.pdfに書いている。参考にすること。

8 課題 halfImage(サンプルではharfImageとなっているが、正しいスペルに直す)を以 下のように処理せよ。 課題提出方法
KinectAppクラスに、メンバー関数kadai1prog()を追加し、run()の中でそれを呼ぶ形で、以下の 処理を追加せよ。 halfImageをcv::splitで4枚の1チャネル画像singlechannels[0] ~singlechannels[3]に分ける それの1枚目(B画像)を、閾値処理(閾値th = 127)し、グレースケール画像(gray)に格納、 それを別のウィンドウにimshowで表示。 終了する直前に、imwrite関数を使って、halfImageを”halfImage.png”, gray画像を”gray.png”に保 存せよ。 課題提出方法 出来たプログラム(main.cpp)および画像ファイルhalfImage.png, gray.pngを、添 メール本文には、感想などを書いてください。 授業時間内にできない場合は、次の実験及び演習がある前日までに送付のこ と

9 4チャネル画像を4枚の1チャネル画像に分割する方法
std::vector<cv::Mat> singlechannels; としておいて、4チャネル画像halfImageを cv::split(halfImage, singlechannels); とすれば、 singlechannels[0] (チャネル0の画像=B) singlechannels[1] (チャネル1の画像=G) singlechannels[2] (チャネル2の画像=R) singlechannels[3] (チャネル3の画像=A): 使わない ができる(次ページ参照)。

10 4チャネル画像 halfImage cv::split cv::threshold Singlechannels[0] B
gray

11 2値化の方法 画像処理の最も基本的な処理 何かの値がある値(閾値という)よりも、大き いとき白、小さいとき黒(あるいは逆)に塗る 例
Kinectで読み込んだカラー画像をモノクロ(1 channelデータ)にする cv::thresholdを使う

12 OpenCVの関数の調べ方 thresh 255 maxVal thresh 255 maxVal
にあるマニュアルによると double threshold(const Mat& src, Mat& dst, double thresh, double maxVal, int thresholdType) 要するに、引数は src: Mat型入力変数(処理のもとの画像) dst: Mat型出力変数(処理結果の画像) thresh: 閾値(0以上、255以下) maxVal: 閾値より大きいとき出力をこの値にする thresholdType: CV_THRESH_BINARY CV_THRESH_BINARY_INV ほかにもある(マニュアル参照) thresh 255 maxVal thresh 255 maxVal

13 閾値処理のプログラム例(参考) #include <pragma230.h>
【画像2値化の例】 #include <pragma230.h> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main(int argc, char *argv[]) { Mat gray_img = imread("lena.jpg", 0);//モノクロで読み込む if(gray_img.empty()) return -1; // 固定の閾値処理 Mat bin_img; // 入力画像,出力画像,閾値,maxVal,閾値処理手法 threshold(gray_img, bin_img, 150, 255, THRESH_BINARY); // 結果画像表示 namedWindow("Binary", WINDOW_AUTOSIZE); imshow("Binary", bin_img); waitKey(0); }


Download ppt "Kinectで画像処理 第2回."

Similar presentations


Ads by Google