C

マウスイベントで線を引く

マウス操作で読み込んだ画像に線を引いてみる。 cvLineを使って線を引く。レフトボタンが押された座標を保持、押されなかったらクリア、マウスが動いてる最中は常に押している座標と押された座標を更新し続ければ線が引ける。・ソースコード #include <cv.h> #incl</cv.h>…

テンプレートマッチングの比較

cvMatchTemplateを使ってテンプレートマッチングを行ってみる。 マッチングに利用できる相関関数 CV_TM_SQDIFF (最小値の座標がマッチング位置) CV_TM_SQDIFF_NORMED CV_TM_CCORR (最大値の座標がマッチング位置) CV_TM_CCORR_NORMED CV_TM_CCOEFF (最大値の…

ヒストグラムの比較

OpenCVを使ってヒストグラムの比較を行ってみる。 どうやるかというと、二つの画像のヒストグラムを計算してから、cvCompareHistを用いてそれらを比較すればいい。 今回は以下の二つの画像を使ってみた。自分の手の画像です。 myhand1.jpg myhand2.jpg cvCom…

OpenCVで魚眼レンズ

Imager で魚眼っぽいフィルタつくったを参考にOpenCVで魚眼レンズフィルターを作ってみました。 #include <stdio.h> #include <cv.h> #include <highgui.h> #include <math.h> void Anglar_Fisheye(char *file_name) { IplImage *img = 0; IplImage *out_img = 0; double r; //魚眼レンズの半径</math.h></highgui.h></cv.h></stdio.h>…

Cでchomp

C

Cでchompを書いてみます。 chompとはPerlの関数で、文字列の中の改行('\n')を削除します。 #include <stdio.h> #include <string.h> static char* chomp( char* str ) { int l = strlen( str ); if( l > 0 && str[l-1] == '\n' ) { str[l-1] = '\0'; } return str; } int main(v</string.h></stdio.h>…

画像にモザイクをかける

画像にモザイクをかけてみます。 基本的にモザイクの大きさは10×10で、その中のRGB値の平均をモザイクの範囲の各画素値に代入します。 #include <cv.h> #include <stdio.h> #include <highgui.h> int main (int argc, char **argv) { IplImage *img; IplImage *output_img; char *file_</highgui.h></stdio.h></cv.h>…

エッジ検出

OpenCVを用いてエッジ検出を行ってみます。 エッジ検出を行うアルゴリズムは色々ありますが、今回はCannyアルゴリズムを使ってみました。 /* threshold1 と threshold2 のうち小さいほうがエッジ同士を接続するために用いられ, 大きいほうが強いエッジの初…

ピクセルデータに直接アクセス

OpenCVを使ってみます。OpenCVはインテルが公開しているライブラリのことです。とりあえずopencv.jpのサンプルコードを参考にしてコードを書いてみました。 #include <cv.h> #include <highgui.h> int main (int argc, char **argv) { int x, y; unsigned char p[3]; IplImage</highgui.h></cv.h>…

大津の方法による閾値の計算

判別分別法を用いた大津の方法によって、二値化処理を行うための閾値を求めてみます。 あまり詳しくありませんが、閾値を求める方法の中でもこれが一番ポピュラーな方法らしいです。 大津の方法に関してはこのサイトを参考にしました。 以前と同じように、画…

画像に1次微分フィルタをかける

グレー画像に1次微分フィルタをかけてみます。 1次微分フィルタをかけると画像のエッジを抽出することができるんです。 今回はこの画像に1次微分フィルタをかけてみます。 画像はグローバルな二次元配列imageにあらかじめ読み込まれていて、同じくグローバル…