1. 安裝 OpenCV 開發套件
要開發 OpenCV 的程式,要先在 Linux 裏安裝相關套件[root@Celeron-D ~]# yum install opencv-devel opencv-devel-docs其中的 "opencv-devel" 是 OpenCV 的函式庫及標頭檔,"opencv-devel-docs" 是它的開發文件。
2. 建立新專案
參考“在 Fedora 中,用 Eclipse 寫第一個程式 HelloWorld”一文,開建立新專案。3. 撰寫程式、下載測試影像
從 " The USC-SIPI Image Database " 或 " Professor Eli Turkel" 下載測試圖片(別的來源也 OK),要放在工作區 (workspace) 中。提供測試的 OpenCV 範例程式如下,請剪貼、覆蓋在 HelloWorld.c 上。/* =============================================================注意:上面的程式共提供三種 Histogram Equalization (直方圖等化) 的方法,有好有壞自己試試看,改變程式中 switch( 2 ) 括號內的數字就可以。
Name : FirstProject.c (Histogram_Eq.c)
Author : SiB Chang
Version : 1.0
Copyright : GPLv3
Description : "Histogram Equalization" in C, Eclipse, and Linux
============================================================= */
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#define IPL_DEPTH_8U 8
int main( )
{
IplImage *InImage;
IplImage *TmpImage;
IplImage *RedImage, *GreenImage, *BlueImage; // Red Green Blue
IplImage *HueImage, *SatImage; // Hue Saturation
IplImage *ValImage, *LumImage; // Value Lightness (Luminance)
InImage = cvLoadImage( "../tooDark.jpg", 1);
TmpImage = cvCreateImage( cvGetSize(InImage), IPL_DEPTH_8U, 3);
RedImage = cvCreateImage( cvGetSize(InImage), IPL_DEPTH_8U, 1);
GreenImage = cvCreateImage( cvGetSize(InImage), IPL_DEPTH_8U, 1);
BlueImage = cvCreateImage( cvGetSize(InImage), IPL_DEPTH_8U, 1);
// 2: V of HSV processed only,
// 1: L of HLS processed only,
// 0: RGB processed separately (bad, color changed)
switch( 2 ){
case 2:
cvCvtColor( InImage, TmpImage, CV_RGB2HSV ); // Change RGB to HSV
HueImage = RedImage; SatImage = GreenImage; ValImage = BlueImage;
cvSplit( TmpImage, HueImage, SatImage, ValImage, 0); // Split into H,S,V
cvEqualizeHist( ValImage, ValImage ); // Equalize V image
cvMerge(HueImage, SatImage, ValImage, 0, TmpImage); // Merge H,S,V
cvCvtColor( TmpImage, TmpImage, CV_HSV2RGB ); // Change HSV to RGB
break;
case 1:
cvCvtColor( InImage, TmpImage, CV_RGB2HLS ); // Change RGB to HLS
HueImage = RedImage; LumImage = GreenImage; SatImage = BlueImage;
cvSplit( TmpImage, HueImage, LumImage, SatImage, 0); // Split into H,L,S
cvEqualizeHist( LumImage, LumImage ); // Equalize L image
cvMerge(HueImage, LumImage, SatImage, 0, TmpImage); // Merge H,L,S
cvCvtColor( TmpImage, TmpImage, CV_HLS2RGB ); // Change HLS to RGB
break;
default:
cvSplit(InImage, RedImage, GreenImage, BlueImage,0); // Split into R,G,B
cvEqualizeHist( RedImage, RedImage); // Equalize R image
cvEqualizeHist( GreenImage, GreenImage); // Equalize G image
cvEqualizeHist( BlueImage, BlueImage); // Equalize B image
cvMerge( RedImage,GreenImage,BlueImage,0,TmpImage); // Merge R,G,B
}
cvNamedWindow("tooDark.jpg", 1);
cvShowImage ("tooDark.jpg", InImage);
cvNamedWindow("Equalized tooDark.jpg", 1);
cvShowImage ("Equalized tooDark.jpg", TmpImage);
cvWaitKey(0);
return 0;
}
4. 設定專案參數
從「選單」→「專案(P)」點選「內容(P)」,以設定專案的內容當跳出專案設定視窗後,從左欄的「C/C++ Build」點選「Settings」,接著再設定右欄 Settings。在右欄中的「Configuration:」選 "[All Configurations]",使「除錯版」與「釋出版」有相同設定。設定標頭檔的引入路徑要從「Tool Settings」→「GCC C Compiler」點選「Includes」。
注意:上面的「Configuration:」設定中若「除錯版」與「釋出版」的設定要求不同時,就要分開設定。
點選在「Include paths (-I)」右方的 『+』圖示,以加入 OpenCV 的路徑,不同版本的安裝路徑可能不同,可利用「File system...」這個按鈕方便尋找,在本系統是 /usr/include/opencv
最後要設定 Link (鏈結) 的參數,一樣從「Tool Settings」→「GCC C Linker」點選「Libraries」,再按「Libraries (-l)」右方的 『+』圖示,加入 "cv"、"cxcore"、"highgui" 三個 (要分三次加入)。
按確定後,完成專案設定。
5. 編譯、執行
按「鐵鎚」選定「釋出版」模式,再按一次「鐵鎚圖示」就會進行「編譯」,如果出現「警告訊息」致編譯未完成,再按一次「鐵鎚圖示」就可以了。接著按「執行」鈕,開始執行程式。
左邊的相片是處理前,右邊是處理後。
已測試版本:
- Fedora: 14
- Eclipse: 3.6.1
- OpenCV: 2.1.0
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)