画像処理

Last-modified: 2011-07-24 (日) 16:42:30

画像処理に使用するライブラリやサンプルプログラムなどの紹介
詳細は添付したテキストファイルを参照してください


目次


today: ?
yesterday: ?
total: ?

更新履歴

2010/12/08

  • OpenCV2.2のインストール方法を修正
    • Qtの実装について追加
    • apt-getを修正

2010/12/13

  • OpenCVのインストール方法を修正
    • apt-getとcmakeを見やすく
    • cmakeの結果を修正
    • 添付ファイルの修正

2011/03/20

  • OpenCVのインストール方法をsvn版に修正
    • 今までのインストール方法はtxtファイルで閲覧可能にした

2011/03/25

  • OpenCVのインストール方法を修正
    • 誤字(cmae -> cmake)を修正

2011/05/28

  • OpenCVのインストール方法をUbuntu 11.04用にした

2011/06/11

  • libwebcamのインストール方法を更新

OpenCV

はじめに

OpenCV 2.3 svn版のインストールを行う.
svn版は開発版なので,最新機能をバシバシ使いたい人向け.
通常版のインストール方法も下にあります.
基本的にOpenCVのWikiを見ながら以下の作業を行った.
http://opencv.willowgarage.com/wiki/InstallGuide

端末入力はこの色

端末出力はこの色

設定環境

OpenCVをインストールした環境,他は未確認

  • OS: Ubuntu 11.04
  • gcc: 4.5.2
  • cmake: 2.8.2
  • Python: 2.7.1
  • Qt: 4.7.2

apt-getによるインストール

OpenCVをインストールするために必要なライブラリなどをインストールする

インストールするもの一覧

  • LibTBB: Leverage multi-core processor performance [#f54365c4]
  • LibGTK: Creating graphical user interfaces
  • pkg-config: Managing library compile and link flags
  • LibPNG: The official PNG reference library
  • Zlib: Lossless data-compression library
  • LibTIFF: Tag Image File Format
  • LibJPEG: JPEG image compression
  • FFmpeg: Convert and stream audio and video
  • Xine: Free multimedia player
  • LibDC: Digital camera specification
  • SWIG: Including common scripting languages
  • Libv4l: Top of video4linux2 devices
  • Python-Numpy: Contains a N-dimensional array object
  • OpenEXR: High Dynamic-Range (HDR) image file format
  • Libswscale: The video scaling library from the ffmpeg
  • Libeigen2: Lightweight C++ template library

apt-get実行

  • GUI関係
    $ sudo apt-get install freeglut3 freeglut3-dev libglu1-mesa-dev libice-dev libmysqlclient16 libphonon4 libqglviewer-dev-common \
    libqglviewer-qt4-2 libqglviewer-qt4-dev libqt4-declarative libqt4-designer libqt4-dev libqt4-help libqt4-network libqt4-opengl \
    libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-svg libqt4-test \
    libqt4-xmlpatterns libqtwebkit-dev libqtwebkit4 libsm-dev libxmu-dev libxmu-headers libxt-dev mysql-common phonon \
    phonon-backend-gstreamer qt4-qmake
  • cmake結果

    - GUI

    -- QT 4.x: 1

    -- QT OpenGL support: 1

  • Media関係
    $ sudo apt-get install zlib1g-dev libpng12-dev zlib1g-dev \
    libjpeg62-dev libtiffxx0c2 libjpeg62-dev libtiff4-dev libtiffxx0c2 libjasper-dev \
    libilmbase-dev libopenexr-dev
  • cmake結果

    - Media I/O

    -- ZLib: TRUE

    -- JPEG: TRUE

    -- PNG: TRUE

    -- TIFF: TRUE

    -- JPEG 2000: TRUE

    -- OpenEXR: YES

    -- OpenNI: FALSE

  • Video I/O関係
    $ sudo apt-get install libdc1394-22-dev libraw1394-dev 	libdc1394-22 libgsm1 libpostproc51 libschroedinger-1.0-0 libswscale0 libva1 libvpx0 \
    ffmpeg libavcodec52 libavdevice52 libavfilter1 libavformat52 libavutil50 libavcodec-dev libavformat-dev libavutil-dev \
    libswscale-dev \
    debhelper html2text libglib2.0-dev libgstreamer0.10-dev libmail-sendmail-perl libsys-hostname-long-perl libxml2-dev po-debconf libgstreamer-plugins-base0.10-dev \
    libpthread-stubs0 libpthread-stubs0-dev libunicap2 libunicap2-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxv-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-video-dev x11proto-xext-dev xtrans-dev \
    libv4l-dev \
    libfreetype6-dev libslang2-dev libxine-dev libxine1-bin libmad0 libxine1-ffmpeg
  • cmake結果

    - Video I/O

    -- DC1394 1.x:

    -- DC1394 2.x: 1

    -- FFMPEG: 1

    -- codec: 1

    -- format: 1

    -- util: 1

    -- swscale: 1

    -- gentoo-style: 1

    -- GStreamer: 1

    -- UniCap:

    -- PvAPI:

    -- V4L/V4L2: Using libv4l

    -- Xine: 1

  • Interface関係
    $ sudo apt-get install libblas3gf libgfortran3 liblapack3gf python-numpy \
    tbb-examples libtbb-doc libtbb-dev libtbb2 \
    libeigen2-dev
  • cmake結果

    - Interfaces

    -- Python: ON

    -- Python interpreter: /usr/bin/python2.7

    -- Python numpy: YES

    -- Use IPP: NO

    -- Use TBB: YES

    -- Use Cuda: NO

    -- Use Eigen2: YES

OpenCV svn版のインストール

svnのインストール

OpenCVの最新機能を使用するために,バージョン管理システムの svn をインストールする
あと、cmakeがインストールされているか確認する

$ sudo apt-get install apache2-utils apache2.2-bin apache2.2-common bsd-mailx exim4 exim4-base exim4-config \
exim4-daemon-light libapache2-svn libaprutil1-dbd-sqlite3 libaprutil1-ldap libconfig-inifiles-perl libsvn-perl \
python-subversion subversion-tools \
cmake cmake-data libxmlrpc-core-c3-0

OpenCVの最新版を確認する(作成時点では2.2.9が最新)

必要なファイルの作成とそこへの移動

$ mkdir ~/Downloads/openCV-2-svn.build
$ cd Downloads/openCV-2-svn.build/

ダウンロード

  • branches
    $ svn checkout https://code.ros.org/svn/opencv/branches/2.2/
  • trunk
    $ svn checkout https://code.ros.org/svn/opencv/trunk/

ここから先は trunk で進める

OpenCVのインストール

  • cmakeの実行
$ mkdir ~/Downloads/openCV-2-svn.build/trunk/opencv/release/
$ cd ~/Downloads/openCV-2-svn.build/trunk/opencv/release/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
  -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON \
  -D WITH_XINE=ON -D WITH_UNICAP=ON -D WITH_OPENEXR=ON ../
  • cmakeの結果確認
-- Extracting svn version, please wait...
-- SVNVERSION:  svn:5113
-- Detected version of GNU GCC: 45 (405)
-- checking for module 'gtk+-2.0'
--   package 'gtk+-2.0' not found
-- checking for module 'libucil'
--   package 'libucil' not found
-- Found OpenEXR: /usr/local/lib/libIlmImf.so
-- Could NOT find PythonLibs (missing:  PYTHON_INCLUDE_DIRS)
--     Use INCLUDE: /usr/lib/pymodules/python2.7/numpy/core/include
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named sphinx
-- TBB detected:
-- Parsing 'cvconfig.h.cmake'
-- PDF LaTeX found!
--
-- General configuration for opencv 2.2.9 =====================================
--
--     Built as dynamic libs?:     ON
--     Compiler:
--     C++ flags (Release):          -Wall -pthread -march=i686 -ffunction-sections  -O3 -DNDEBUG  -fomit-frame-pointer -O3
	    	-ffast-math -msse -msse2 -mfpmath=387 -DNDEBUG
--     C++ flags (Debug):            -Wall -pthread -march=i686 -ffunction-sections  -g  -O0 -ggdb3 -DDEBUG -D_DEBUG
--     Linker flags (Release):
--     Linker flags (Debug):
--
--   GUI:
--     QT 4.x:                     1
--     QT OpenGL support:          1
--
--   Media I/O:
--     ZLib:                       TRUE
--     JPEG:                       TRUE
--     PNG:                        TRUE
--     TIFF:                       TRUE
--     JPEG 2000:                  TRUE
--     OpenEXR:                    YES
--     OpenNI:                     FALSE
--
--   Video I/O:
--     DC1394 1.x:
--     DC1394 2.x:                 1
--     FFMPEG:                     1
--       codec:                    1
--       format:                   1
--       util:                     1
--       swscale:                  1
--       gentoo-style:             1
--     GStreamer:                  1
--     UniCap:
--     PvAPI:
--     V4L/V4L2:                   Using libv4l
--     Xine:                       1
--
--   Interfaces:
--     Python:                     ON
--     Python interpreter:         /usr/bin/python2.7
--     Python numpy:               YES
--     Use IPP:                    NO
--     Use TBB:                    YES
--     Use Cuda:                   NO
--     Use Eigen2:                 YES
--
--   Documentation:
--     Build Documentation:        NO
--
--     Install path:               /usr/local
--
--     cvconfig.h is in:           /home/kato/Downloads/opencv/trunk.git/opencv/release
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kato/Downloads/opencv/trunk.git/opencv/release

インストール

$ make -j2; sudo make install;sudo ldconfig

詳細

最新版HTML

svn(Ubuntu 10.10)

2.2の(svnじゃない)インストール方法

2.1のインストール方法

libwebcam

概要

  • LogitechのQuickCam Teamに詳細がある.
    USBカメラのパラメータを変更するライブラリ
  • LogicoolのUSBカメラなら適応可能?
  • LinuxだとvideoInputLibsが使用できないのでこちらを使用します.
端末入力はこの色

端末出力はこの色

インストール環境について

これ以外の環境では未確認です.

$ uname -v

#62-Ubuntu SMP Wed Apr 20 22:10:33 UTC 2011

#42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011

$ uname -r

2.6.32-32-generic

2.6.38-8-generic

以下はカーネル2.6.38を前提として話を進めるので, それ以外の人は適宜読み替えてください.

インストール手順

webcam-tools をチェックアウトする.

svnのインストールについては省略.

$ cd ~Downloads/
$ mkdir webcam
$ cd webcam/
$ svn checkout http://svn.quickcamteam.net/svn/qct/webcam-tools/trunk

uvcvideo.h

uvcvideo.hを以下に置く

/usr/src/linux-headers-2.6.38-8/drivers/media/video/uvc/
/usr/include/linux/

$ uname -r

2.6.38-8-generic

$ sudo apt-get install linux-source-2.6.38
$ mkdir trunk/build
$ cd trunk/build

カーネルから引っ張ってくる

linux-sourceに含まれているuvcvideo.hをインストールする.

カーネルのバージョンに注意すること.

$ sudo apt-get install linux-source-2.6.38
$ tar jxvf /usr/src/linux-source-2.6.38/linux-source-2.6.38.tar.bz2
$ cp linux-source-2.6.38/drivers/media/video/uvc/uvcvideo.h /usr/src/linux-headers-2.6.38-8/drivers/media/video/uvc/
$ rm -rf linux-source-2.6.38

ネットから引っ張ってくる

以下から直接 uvcvideo.h のソースを見つけることも可能

cmake

cmake とインストールを実行する.

$ cmake -D UVCVIDEO_INCLUDE_PATH=/usr/src/linux-headers-2.6.38-8/drivers/media/video/uvc/ -D CMAKE_INSTALL_PREFIX=/usr/local ../

[中略]

-- Configuring done

-- Generating done

-- Build files have been written to: /home/kato/Downloads/webcam/trunk/build

$ make -j2

[中略]

[100%] Built target uvcdynctrl

$ sudo make install;sudo ldconfig

Install the project...

-- Install configuration: ""

-- Installing: /usr/local/lib/libwebcam.so.0.2.1

-- Installing: /usr/local/lib/libwebcam.so

-- Installing: /usr/local/bin/uvcdynctrl

-- Installing: /usr/local/bin/uvcdynctrl-0.2.1

-- Removed runtime path from "/usr/local/bin/uvcdynctrl-0.2.1"

-- Installing: /etc/udev/rules.d

-- Installing: /etc/udev/rules.d/80-uvcdynctrl.rules

-- Installing: /lib/udev/uvcdynctrl

-- Installing: /etc/udev/data

-- Installing: /etc/udev/data/046d

-- Installing: /etc/udev/data/046d/logitech.xml

$ sudo cp ../common/include/dynctrl-logitech.h ../common/include/webcam.h /usr/include/

test

用意されたテストプログラムを実行し,インストールされたか確認する.

$ cd ../libwebcam/
$ g++ -Wall -lwebcam -c test.c -o test.o;g++ -Wall -O2 -lwebcam -o test test.o
$ ./test

Testing libwebcam ...

-- 省略 --

Done.

Current brightness = 127

Successfully set brightness to = 0

Successfully set brightness to = 255

Successfully set brightness to = 127

Error text for error 0: 'Success'

Error text for error 9: 'Error during data synchronization'

ERROR: Unable to get the text for error 123

Adding control mappings ...

Control mappings successfully added (6 controls, 0 messages).

Exiting.

詳細

bundler

概要

  • 同じ場所で撮影されたさまざまな画像から
    三次元再構成を行うソフト
  • 詳しくはBundlerのサイトで

インストール手順

端末入力はこの色

端末出力はこの色

$ cd Downloads
$ mkdir bundler.build
$ cd bundler.build/
$ wget http://phototour.cs.washington.edu/bundler/distr/bundler-v0.4-source.tar.gz
$ tar zxvf ../bundler-v0.4-source.tar.gz
$ cd bundler-v0.4-source/
$ pwd

/home/kato/Downloads/bundler.build/bundler-v0.4-source

$ sudo apt-get install imagemagick
$ cd ../
$ wget http://www.cs.ubc.ca/~lowe/keypoints/siftDemoV4.zip
$ unzip siftDemoV4.zip
$ cp ./siftDemoV4/sift /home/kato/Downloads/bundler.build/bundler-v0.4-source/bin
$ sudo apt-get install gfortran liblapack3gf liblapack-dev
$ cd bundler-v0.4-source/
$ make
  • .bashrc最下部に以下の二行を追加

# for bundler

export LD_LIBRARY_PATH=/home/kato/Downloads/bundler.build/bundler-v0.4-source/lib

$ cd
$ source .bashrc

詳細

サンプルコード

プログラム置き場