顯示具有 Progrmmer 人生 標籤的文章。 顯示所有文章
顯示具有 Progrmmer 人生 標籤的文章。 顯示所有文章

2011年3月29日 星期二

[教學] Visual Studio2008 建置 OpenCV2.1


建置環境:win7(32bit) + vs2008 +openCV
PS: ICE在vs2010底下沒有建置過
請不要拿2010的來問我= =

---

step1.
(1) Cmake2.8.1.exe 連結
(2) OpenCV-2.1.0-win32.vs2008.exe 連結
(3) TBB30.rar 連結

step2.
(1)
先安裝Cmake
選第二個 Add OpenCV to the system PATH


我安裝的地點是C:\Program Files\CMake 2.8
(這部分就隨看官心情了)

(2)
安裝OpenCV
選第一個 Do not add OpenCV to the system PATH
(我們等等手動加入即可)


我安裝的地點是C:\Program Files\OpenCV
(這部分也隨看官心情)
PS: 請先在OpenCV資料夾建置一個vs2008(等等會用到)

(3)
手動解壓INTEL TBB30
我放置地點是:C:\Program Files\TBB30
(這部分也隨看官心情)

step3.
電腦右鍵→內容→進階→環境變數
環境變數設定


手動加入:
(1) C:\Program Files\OpenCV2.1\bin
(2) C:\Program Files\TBB30\bin\ia32\vc9
加入後需要重啟windows用戶(我做法是直接重開機)

簡單的做完了,接下來是困難的了

step4.
(1)
打開Cmake(最上方選項填入)
where is the source code: C:\Program Files\OpenCV2.1
where to build the binaries: C:\Program Files\OpenCV2.1\vs2008

按configure之後,接著選Visual Studio 9
下面的選項選擇Use default native compilers,再點擊Finish繼續

過一陣子會出現窗口(注意:Cmake配置時是不能打開vs2008的)
之後勾選
BUILD_SHARED_LIBS,BUILD_TESTS,OPENCV_BUILD_3DPARTY_LIBS,WITH_JASPER,WITH_JPEG,WITH_PNG,WITH_TBB(一般這個沒默認選上)和WITH_TIFF
(其餘沒有在這上面的,請不要勾選)

再點選configure
之後窗口出現TBB_INCLUDE_DIR-NOTFOUND字樣的红色選項
請填入 C:\Program Files\TBB30\include

再點選configure
之後在窗口又會在TBB_LIB_DIR處發現紅色字樣
請填入 C:\Program Files\TBB30\lib\ia32\vc9
(ia32是代表32位元系統)

再點選configure所有紅色字樣皆會變成白色
同時在下方字樣會出現Use TBB:YES
接著點選Generate

(2)
完成後在剛創建的資料夾C:\Program Files\OpenCV2.1\vs2008
會出現OpenCV.sln 打開後,先不要編譯
先去工具→選項→VC++目錄→顯示目錄(可以更動等等需要的東西)


可執行檔:C:\Program Files\TBB30\bin\ia32\vc9
Include 檔案:C:\Program Files\TBB30\include
程式庫檔:C:\Program Files\TBB30\lib\ia32\vc9
接著確定之後

在方案OpenCV右鍵→重建方案(等一段時間)
再往下轉到Install右鍵→建置方案(等一段時間)


接著在圖片3的地方下拉選擇Release
(如果剛是Release,請轉至Debug,總之兩個都要建置一次)
接著跟剛才同樣步驟
在方案OpenCV右鍵→重建方案(等一段時間)
再往下轉到Install右鍵→建置方案(等一段時間)

(3)
接著再到工具→選項→VC++目錄→顯示目錄
加上剛才已經建置完成的一些資料夾
可執行檔:C:\Program Files\OpenCV2.1\vs2008\bin
Include檔案:C:\Program Files\OpenCV2.1\vs2008\include\opencv
參考檔:
C:\Program Files\OpenCV2.1\vs2008\bin\Release
C:\Program Files\OpenCV2.1\vs2008\bin\Debug
程式庫檔:C:\Program Files\OpenCV2.1\vs2008\lib
原始程式檔;
C:\Program Files\OpenCV2.1\vs2008\src\ml
C:\Program Files\OpenCV2.1\vs2008\src\highgui
C:\Program Files\OpenCV2.1\vs2008\src\cxcore
C:\Program Files\OpenCV2.1\vs2008\src\cvaux
C:\Program Files\OpenCV2.1\vs2008\src\cv

(4)
再回到電腦右鍵→內容→進階→環境變數設定
把剛才的C:\Program Files\OpenCV2.1\bin
修改成 C:\Program Files\OpenCV2.1\vs2008\bin
接著重新啟動

接著OpenCV就建置完成

---

之後建置每一個需要OpenCV的專案
都要在
[Debug模式下]
專案右鍵→屬性→Debug模式→連結器→輸入→其他相依性加入
cv210d.lib cvaux210d.lib cxcore210d.lib highgui210d.lib ml210d.lib


[Release模式下]
專案右鍵→屬性→Release模式→連結器→輸入→其他相依性加入
cv210.lib cvaux210.lib cxcore210.lib highgui210.lib ml210.lib
(注意:Release模式下比Debug每一個lib都少一個 "d" 喔)

恭喜完成!!


2010年12月12日 星期日

如何在程式碼加上ProgressBar


昨天跟老師討論完之後
老師建議我們把CountDown Timer改成ProgressBar
而其餘需求就跟昨天一樣
(TextView點下會出現ProgressBar並倒數)

以下是我的步驟

[main]
新增ProgressBar並在裡面寫上

android:id="@+id/ProgressBar01"
android:layout_height="wrap_content"
android:layout_width="200px"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20sp"
style="?android:attr/progressBarStyleHorizontal"

並在其餘想要點下的TextView都加上
android:onClick="start"

[主程式]
一開始先宣告
private ProgressBar progressBar;
private int nowProgressStatus=0;
public Thread thread;

接著在OnCreate裡面加上
progressBar = (ProgressBar)findViewById(R.id.ProgressBar01);
progressBar.setVisibility(View.INVISIBLE);(預設隱藏)
final Handler handler = new Handler();
final Runnable callback1 = new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
}
};
thread = new Thread(){
public void run(){
while (nowProgressStatus <100){
try{
Thread.sleep(6000);
}catch (InterruptedException e){
e.printStackTrace();
}
nowProgressStatus+=1;
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
progressBar.setProgress(nowProgressStatus);
}
});
}
}
};

最後在你想要OnClick的TextView裡面加上
progressBar.setVisibility(View.VISIBLE);(點下後出現)
thread.start();

完成!!

如何在程式碼加上CountDown Timer


前天與學長討論工作提示的介面
他叫我在TextView點下去之後有倒數計時器出來

以下是我大概的程式碼
當中的步驟

[main]
新增一個TextView並在裡面加上

android:id="@+id/timer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textColor="@color/red"
(這我有在Color加上紅色的色碼,也可以使用預設的黑色就好)

並在你要點下去的TextView裡面加上這行
android:onClick="start"

[主程式]
一開始先宣告
TextView timeDisplay;
MyCount counter;

再來在OnCreate裡加上
timeDisplay = (TextView) findViewById(R.id.timer);
counter = new MyCount(600000, 1000);
↑這行是指出600個一千毫秒 = 10分鐘

再來敘述MyCount
public class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
timeDisplay.setText("done!");
}
public void onTick(long millisUntilFinished) {
timeDisplay.setText("Left: " + millisUntilFinished / 1000);
}
}

最後就在你要OnClick的那個TextView裡面加上
counter.start();

這樣就大功告成了