OpenCV と画像操作

前準備

cd /tmp
echo download source
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_bilateral.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_blur.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_gaussian.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_median.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_pyramids.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_hough.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_histcompare.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_findcontour.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_opencv_backprojexample.cpp
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_opencv_calcBackProject_Demo2.cpp
#
echo compile ...
g++ -o opencv_bilateral opencv_bilateral.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_blur opencv_blur.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_gaussian opencv_gaussian.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_median opencv_median.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_pyramids opencv_pyramids.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_hough opencv_hough.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_histcompare opencv_histcompare.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_findcontour opencv_findcontour.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
#
g++ -o opencv_backprojexample opencv_backprojexample.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_calcBackProject_Demo2 opencv_calcBackProject_Demo2.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

濃淡画像の2値化 前準備

cd /tmp
echo download source
wget http://www.kkaneko.com/tools/od/data/opencv/imthresh.cpp
#
echo compile ...
g++ -o imthresh imthresh.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

しきい値で2値化

cd /tmp
./imthresh hoge.jpg hoge2.jpg 100
display hoge2.jpg 100

画像特徴 (image features)

前準備
cd /tmp
echo download source
wget http://www.kkaneko.com/tools/od/data/opencv/opencv_harris.cpp
#
echo compile ...
g++ -o opencv_harris opencv_harris.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_harris_points opencv_harris.cpp -DPOINTS -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_shitomasi opencv_shitomasi.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_shitomasi_points opencv_shitomasi.cpp -DPOINTS -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
g++ -o opencv_surf opencv_surf.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_video -lopencv_objdetect -lopencv_features2d -lopencv_nonfree -lopencv_imgproc -lopencv_legacy -lopencv_core
g++ -o opencv_surf_points opencv_surf.cpp -DPOINTS -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_video -lopencv_objdetect -lopencv_features2d -lopencv_nonfree -lopencv_imgproc -lopencv_legacy -lopencv_core

Harris Corner Detector 値を 0 から 255 の範囲に正規化したモノクロ画像

cd /tmp
./opencv_harris /usr/local/share/OpenCV/samples/c/fruits.jpg hoge.jpg 2 3 4
display hoge.jpg

Harris Corner Detector で、しきい値180を超える点の (x, y, 値)

cd /tmp
./opencv_harris_points /usr/local/share/OpenCV/samples/c/fruits.jpg 2 3 4 180

Shi-Tomasi 特徴点の画像表示
cd /tmp
./opencv_shitomasi /usr/local/share/OpenCV/samples/c/fruits.jpg hoge.jpg 1 10 3 4 23
display hoge.jpg

Shi-Tomasi 特徴点 で、しきい値23を超える点の (x, y)

cd /tmp
./opencv_shitomasi_points /usr/local/share/OpenCV/samples/c/fruits.jpg 1 10 3 4 23

SURF 特徴点の画像表示 (minHessian = 400)
cd /tmp
./opencv_surf /usr/local/share/OpenCV/samples/c/fruits.jpg hoge.jpg 400
display hoge.jpg

SURF 特徴点の (x, y, size, angle) (minHessian = 400)

cd /tmp
./opencv_surf_points /usr/local/share/OpenCV/samples/c/fruits.jpg 400