卒研1 第1回資料 OpenCVを用いた画像処理 今日覚えて欲しいこと • Visual Studioの使い方(ビルドと実行の仕方) • Visual StudioでOpenCVを使うための設定方法 • 簡単な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); //B値 src.at<unsigned char>(y,x*3+1) = 255-src.at<unsigned char>(y,x*3+1);//G値 src.at<unsigned char>(y,x*3+2) = 255-src.at<unsigned char>(y,x*3+2);//R値 } } imshow(“negative”,src); waitKey(0); imwrite(“negative.jpg”,src); return 0; } 重要なクラス(構造体)/関数 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++の勉強用
© Copyright 2024 ExpyDoc