卒研1 第1回資料 OpenCVを用いた画像処理
今日覚えて欲しいこと Visual Studioの使い方(ビルドと実行の仕方) Visual StudioでOpenCVを使うための設定方法 (画像の読み込み、保存、表示、簡単な関数)
Visual Studioの使い方 コンパイル・リンク(makeコマンド) 実行モード Debug:処理が遅いがデバッグ情報が取得できる Release:処理が早いがデバッグ情報の取得ができない プログラムの実行 プログラムに 用いるファイル一覧
OpenCVとは・・・ 色々な処理が簡単かつ高速にできる
OpenCVを使うための設定 DebugとRelease どちらも同様の設定をしてください プロジェクト→Donewのプロパティをクリック デバッグの環境の部分にPATH=$(PATH);$(SolutionDir)\bin;を追加
ソーベルフィルタをかけるプログラム例 #include “cv.h” #include “cxcore.h” #include “highgui.h” using namespace cv; int main() { Mat src,dst; src = imread(“000.bmp”); Sobel(src,dst,1,1,3); imshow(“sobel”,dst); waitKey(0); imwrite(“sobel.jpg”,dst); return 0; }
円や四角を描画するプログラム例 #include “cv.h” #include “cxcore.h” #include “highgui.h” using namespace cv; int main() { Mat img; img.create(Size(640,480),8,3); img.setTo(0); circle(img,Point(100,200),40,Scalar(255,0,0),-1); rectangle(img,Point(50,50),Point(200,100),Scalar(0,0,255),20); line(img,Point(400,200),Point(500,320),Scalar(255),1); imshow(“img”,img); waitKey(0); imwrite(“shape.jpg”,img); return 0; }
ピクセル値を反転するプログラム例 #include “cv.h” #include “cxcore.h” #include “highgui.h” using namespace cv; int main() { Mat src; src = imread(“000.bmp”); for(int y = 0; y < src.rows ; y++){ for(int x = 0; x < src.cols ; x++){ src.at<unsigned char>(y,x*3) = 255-src.at<unsigned char>(y,x*3); src.at<unsigned char>(y,x*3+1) = 255-src.at<unsigned char>(y,x*3+1); src.at<unsigned char>(y,x*3+2) = 255-src.at<unsigned char>(y,x*3+2); } imshow(“negative”,src); waitKey(0); imwrite(“negative.jpg”,src); return 0; } //B値 //G値 //R値
重要なクラス(構造体)/関数 Mat:画像を表すクラス(構造体) Point:点を表す構造体。x,y を持っている Scalar:色の表現に使うよく使う Scalar(B値,G値,R値) imread(ファイル名): 画像の読み込み関数 imwrite(ファイル名,画像構造体):画像の保存関数 imshow(ウインドウ名,画像構造体):画像の表示 waitKey(時間[ms]):キー入力待ち関数 画像表示に必要
参考サイト OpenCV.jp(http://opencv.jp) :OpenCVの関数の説明がのってます Programming Place (http://www.geocities.jp/ky_webid/index_old.html) :C/C++の勉強用