卒研1第一回資料

卒研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++の勉強用