Cài đặt OpenNi, OpenCV và QT trong C++
Sau đây là các bước cài đặt
1) Cài đặtOpenNi, Nite and the SensorKinect driver
Source: http://www.greenfoot.org/doc/kinect/ubuntu.html
Source: http://www.greenfoot.org/doc/kinect/ubuntu.html
# Install required packages:
apt-get install g++ libglut3-dev libboost-all-dev
apt-get install libwxbase2.8-dev libwxgtk2.8-dev wx-common
# prepare direcotry
mkdir ~/kinect
cd ~/kinect
# get openni
mkdir OpenNI
cd OpenNI
wget http://www.greenfoot.org/doc/kinect/OpenNI-Linux32.tar.bz2
tar -jxf OpenNI-Linux32.tar.bz2
sudo ./install.sh
cd ..
# install NITE
mkdir NITE
cd NITE
wget http://www.greenfoot.org/doc/kinect/NITE-Linux32.tar.bz2
tar -jxf NITE-Linux32.tar.bz2
echo '0KOIk2JeIBYClPWVnMoRKn5cdY4=' | sudo ./install.sh
cd ..
# install kinect driver
mkdir Kinect
cd Kinect
wget http://www.greenfoot.org/doc/kinect/SensorKinect-Linux32.tar.bz2
tar -jxf SensorKinect-Linux32.tar.bz2
sudo ./install.sh
cd ..
# test the installation
cd OpenNI/Samples/Bin/Release/
./Sample-NiUserTracker
cd ../../../../
2) Cài đặtOpenCV 2.1 in Ubuntu
Trước tiên hãy update các phần mềm phụ thuộc sau bằng lệnh:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
Download OpenCV2.1 về máy:
cd ~
wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.1/OpenCV-2.1.0.tar.bz2/download
tar -xvf OpenCV-2.1.0.tar.bz2
cd OpenCV-2.1.0/
Trong phiên bản này của OpenCV, các tiện ích cấu hình đã bị loại bỏ. Do đó, bạn cần phải sử dụng Cmake để tạo ra makefile. Chỉ cần thực hiện dòng sau lúc bàn điều khiển. Lưu ý rằng có một dấu chấm ở phần cuối của dòng, nó là một đối số cho chương trình cmake và nó có nghĩa là thư mục hiện hành.
cmake .
Kiểm tra cmake và phải chắc chắn dòng FFMPEG là 1 và các dòng khác không có lỗi. Nếu có lỗi dòng nào thì update phần mềm đó về máy
Cài đặt bằng lệnh sau
make
sudo make install
Bây giờ bạn phải cấu hình thư viện. Trước tiên, mở opencv.conf file với lệnh
sudo gedit /etc/ld.so.conf.d/opencv.conf
Thêm dòng sau vào cuối của tập tin (có một tập tin trống rỗng, mà là ok) và sau đó lưu nó /usr/local/lib
Chạy đoạn mã sau để cấu hình thư viện
sudo ldconfig
Bây giờ bạn phải mở tập tin
sudo gedit /etc/bash.bashrc
Thêm vào 2 dòng sau vào cuối tập tin:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
Cuối cùng, mở bàn điều khiển mới, khởi động lại máy tính hoặc đăng xuất và sau đó đăng nhập một lần nữa. OpenCV sẽ không hoạt động được cho đến khi bạn làm điều này.
Bây giờ OpenCV 2.1 đã được cài đặt trong máy tính Ubuntu
Test một số chương trình demo
cd ~
mkdir openCV_samples
cp OpenCV-2.1.0/samples/c/* openCV_samples
cd openCV_samples/
chmod +x build_all.sh
./build_all.sh
Một số dữ liệu đào tạo cho phát hiện đối tượng được lưu trữ trong /usr/local/share/opencv/haarcascades. Bạn cần phải cho OpenCV đào tạo mà dữ liệu để sử dụng. Tôi sẽ sử dụng một trong các thiết bị dò mặt trước mặt có sẵn. Hãy tìm một khuôn mặt:
./facedetect --cascade="/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg
./grabcut lena.jpg
Hình ảnh này cho thấy các hình chữ nhật ban đầu để xác định các đối tượng mà tôi muốn phân đoạn.
Bây giờ tôi khoảng đặt phía sau (màu đỏ) và nền (màu xanh).
Khi bạn đã sẵn sàng, phím n để chạy các thuật toán grabcut. Hình ảnh này cho thấy kết quả của sự lặp đầu tiên của thuật toán.
Bây giờ hãy xem một số phép trừ nền từ một video. Video ban đầu cho thấy một bàn tay di chuyển ở phía trước của một số cây. OpenCV cho phép bạn để tách phía sau (tay) từ nền (cây).
./bgfg_segm tree.avi
|
Đầu tiên update một số phần mềm cần thiết
sudo apt-get install build-essential libgtk2.0-dev libjpeg62-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev
Cài đặt ffmpeg source code cần cho sử dụng video trong OpenCV.
cd ~
tar -xvzf ffmpeg-0.7-rc1.tar.gz
cd ffmpeg-0.7-rc1
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --enable-swscale --enable-shared
make
sudo make install
Download và giải nén OpenCV 2.2:
cd ~
tar -xvf OpenCV-2.2.0.tar.bz2
cd OpenCV-2.2.0/
Bây giờ chúng ta phải tạo ra các Makefile bằng cách sử dụng cmake. Tại đây chúng tôi có thể xác định các bộ phận của OpenCV chúng ta muốn biên dịch. Vì chúng ta muốn sử dụng Python và TBB với OpenCV, đây là nơi chúng ta thiết lập. Chỉ cần thực hiện các dòng sau vào giao diện điều khiển để tạo ra Makefile thích hợp. Lưu ý rằng có một dấu chấm ở cuối dòng, nó là một đối số cho chương trình cmake và nó có nghĩa là thư mục hiện hành.
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON .
Bây giờ biên dịch OpenCV
make
sudo make install
Bây giờ bạn phải cấu hình OpenCV. Trước tiên, mở tập tin opencv.conf với lệnh sau đây:
sudo gedit /etc/ld.so.conf.d/opencv.conf
Thêm các dòng sau vào cuối của tập tin (nó có thể là một tập tin rỗng, đó là ok) và sau đó lưu nó:
/usr/local/lib
Chạy đoạn mã sau để cấu hình các thư viện: tập tin, đó là ok) và sau đó lưu nó:
sudo ldconfig
Bây giờ mở tập tin sau và thêm biến môi trường vào cuối tập tin:
sudo gedit /etc/bash.bashrc
|
Thêm hai dòng này vào cuối của tập tin và lưu nó:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
Cuối cùng đóng cửa số chương console và khởi động lại máy. OpenCV không làm việc nếu không khởi động lại máy.
Có một bước cuối cùng để cấu hình Python với OpenCV. Bạn cần để sao chép các tập tin cv.so vào đúng vị trí. Bạn có thể làm điều đó bằng cách chỉ cần thực hiện lệnh sau đây:
sudo cp /usr/local/lib/python2.7/site-packages/cv.so /usr/local/lib/python2.7/dist-packages/cv.so
Biên dịch các chương trình ứng dụng demo trong source OpenCV:
cd ~/OpenCV-2.2.0/samples/c
chmod +x build_all.sh
./build_all.sh
Một số ví dụ nhận dạng và phát hiện đối tượng được lưu trữ trong /usr/local/share/OpenCV/haarcascades. Chạy chương trình nhận dạng mặt người
./facedetect --cascade="/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg
Bạn cũng có thể phát hiện các đối tượng nhỏ hơn bên trong những cái lớn hơn. Ví dụ, bạn có thể tìm kiếm cho mắt bên trong bất kỳ đối mặt với phát hiện. Bạn có thể làm điều đó với các tham số lồng nhau phân tầng:
./facedetect --cascade="/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/opencv/haarcascades/haarcascade_eye.xml" --scale=1.5 lena.jpg
cd ~/OpenCV-2.2.0/samples/cpp
make
Chạy chương trình demo sử dụng C++ và built trong ~/OpenCV-2.2.0/bin.
~/OpenCV-2.2.0/bin/calibration_artificial
Trong OpenCV 2.2, các thuật toán grabcut được cung cấp như là một mẫu C + +. Đây là một thuật toán phân khúc rất tốt đẹp mà nhu cầu người dùng nhập vào rất ít để phân đoạn các đối tượng trong hình ảnh. Để sử dụng các bản demo, bạn cần phải chọn một hình chữ nhật của khu vực bạn muốn phân khúc. Sau đó, giữ phím Control và nhấp chuột trái để chọn màu nền (Blue). Sau đó, giữ phím Shift và nhấp chuột trái để chọn nền trước (Red). Sau đó nhấn phím n để tạo ra các phân khúc. Bạn có thể bấm n lần nữa để tiếp tục lặp đi lặp lại tiếp theo của thuật toán.
~/OpenCV-2.2.0/bin/grabcut ~/OpenCV-2.2.0/samples/cpp/lena.jpg
~/OpenCV-2.2.0/bin/bgfg_segm ~/OpenCV-2.2.0/samples/c/tree.avi
cd ~/OpenCV-2.2.0/samples/python/
python kmeans.py
python convexhull.py
./minidemo.py
3) Cài đặt harpis
sudo apt-get install harpia
3) Cài đặt QT
sudo apt-get install qtcreator
sudo apt-get install qtcreator
4) Combine it
Thư mục ~/kinect nằm trong thư mục $HOME của user
Thư mục ~/kinect nằm trong thư mục $HOME của user
Đặt biến môi trường trong ~/.bashrc
export KINECT_DIR=$HOME/kinect
Download ví dụ test thử OpenCVKinect
http://svn.comiendolimones.com/OpencvKinect
http://svn.comiendolimones.com/OpencvKinect
Đặt các tập tin download ở bất cứ nơi nào bạn thích.
Bây giờ đây là một phần khó khăn. Liên kết OpenCV và OpenNi với QT. Điều này được thực hiện bằng Makefile tiện dụng này.
Bây giờ đây là một phần khó khăn. Liên kết OpenCV và OpenNi với QT. Điều này được thực hiện bằng Makefile tiện dụng này.
OSTYPE := $(shell uname -s)
BIN_DIR = .
INC_DIRS = /usr/include/ni
SRC_FILES = *.cpp
EXE_NAME = SimpleViewer
ifeq ("$(OSTYPE)","Darwin")
LDFLAGS += -framework OpenGL -framework GLUT
else
USED_LIBS += glut cxcore cv highgui cvaux ml QtGui QtCore pthread
endif
USED_LIBS += OpenNI
CFLAGS = -pipe -O2 -I/usr/local/include/opencv -D_REENTRANT $(DEFINES)
CXXFLAGS = -pipe -O2 -I/usr/local/include/opencv -D_REENTRANT $(DEFINES)
include $(KINECT_DIR)/OpenNI/Samples/Build/Common/CommonCppMakefile
Đảm bảo OpenCV được cài đặt trong các đường dẫn tôi đã chỉ định, nếu không bạn sẽ phải thay đổi chúng.
Tạo một tập tin gọi là Makefile trong thư mục nơi bạn đặt các tập tin. Các thư mục sau đó sẽ giống như thế này:
Tạo một tập tin gọi là Makefile trong thư mục nơi bạn đặt các tập tin. Các thư mục sau đó sẽ giống như thế này:
Makefile
Sau đó biên dịch
make
Hệ thống đã làm việc