CString to char*

2010年8月15日 星期日

因為要用cvLoadImage

一定要用char*才可以通過
試過了4 5種方法都不成功
有的是編譯不過
有的是執行時開圖片時會出現錯誤使程式終止
我也看不懂所以不知道是什麼原因 但好像就是在轉換的時候的函式問題

終於試到一個成功的了
一定要記下來

#include "string.h"
#include "stdlib.h"

char *CStringToChar(CString str)
{
char *charString = new char[str.GetLength() + 1];
wcstombs_s(NULL, charString, str.GetLength() + 1, str, _TRUNCATE);
return charString;
}

參考網址
http://www.wretch.cc/blog/ahongyeh/33295409


=========================================

就是不斷地 Trial and Error
不是嗎??

OpenCV2.0 vs. VS2008

2010年8月13日 星期五

真的有很多前製作業 還好友學長教導不然我真的不曉得在做什麼

1. 下載並安裝OpenCV 我這裡用的版本是OpenCV2.0(不同版本不一樣喔)
環境變數也記得加一下喔



2. 下載並安裝Visual Studio2008
3. 下載並安裝CMake 我的版本是cmake-2.8.2-win32-x86.exe
4. 執行 CMake (cmake-gui)
4.1 建立資料夾"C:/OpenCV2.0/vs2008"
4.2 如下圖設定



4.3 按下"Configure" 並如下圖設定 之後按下"finish"


4.4 跑完之後如下圖所示 再按下"Configure"


4.5 跑完如下圖所示 再按下"Generate"


4.6 跑完後如下圖所示 這部份就完成了 可以關閉視窗囉~~


5. 到"C:\OpenCV2.0\vs2008\" 點選OpenCV.sln
就是visual studio的專案圖示的檔案
6. 如下圖所示

跑完後
接著如下圖所示
跑完後
再如下圖所示
跑完後
依舊如下圖所示
跑完後
一樣如下圖所示 設定環境變數

7. 工具->選項
"VC++ 目錄""Include檔案",增加"C:\OpenCV2.0\vc2008\include\opencv"

"程式庫檔",增加" C:\OpenCV2.0\vc2008\lib"。



8. 接著開新專案 win32->win32主控台應用程式->輸入檔名->應用程式設定 空專案 ->完成
打開專案設定 如下圖所示
"debug" -> cxcore200d.lib cv200d.lib highgui200d.lib

"release" -> cxcore200.lib cv200.lib highgui200.lib


9. 設定環境變數
C:\OpenCV2.0\vc2008\bin;


10. 執行程式 按F5
注意圖片要和C++檔放在同一個資料夾喔


參考網站 http://blog.yam.com/dainn/article/25692284
感謝先進的努力
感謝學長的指導
感謝我有顆熱忱
感謝上帝讓我有信心走下去

繼續加油吧~~

[Linker error] __cpu_features_init解決方法

2010年7月23日 星期五

灌了MinGW後Dev cpp compile就會出現這個error


解決方法是把
工具->編譯器選項->目錄->函式庫->新增MinGW目錄下的lib,再移到最上面

C++ Static用法

2010年7月20日 星期二

static 為首的宣告稱之為靜態變數宣告,通常是使用在一個會不只被呼叫一次的函式當中,而且是希望只有被宣告一次,就會一直存在,數值不會被外部的函式影響的變數。

In C++, you must first declare a variable before using it. The C++ language provides an exception to this rule through the static keyword. If you declare a member variable as static in a class, an instance of that class would be made available when the class is used.

If you declare a member variable of a class as static, in C++, you must initialize it globally before using the static member variable.

參考自 http://www.functionx.com/managedcpp/keywords/static.htm


=================================================================

static 用於全域變數/函式, 區域變數, 類別成員有三種意義。
static 讓全域變數/函式不能被其他 .cpp 檔案使用。

static 讓區域變數紀錄自己的數值。
通常函式中的區域變數在程式流程每次進入函式的時候才被產生於堆疊區,並且初始化,程式流程一旦離開了函式,它就會被消滅,所以該變數的數值是無法保留的,每次進入函式都會由初始值重新開始,但如果將這些區域變數宣告為 static,就會令它保持現值,等於是讓區域變數有全域變數的效果。

static 類別成員(變數與函式)可以 類別名稱:: 直接取用。
要使用類別中的資料成員與函式成員,必須以該類別宣告變數(new instance)之後,才能夠透過 . 運算子或 -> 運算子取用,但是如果把類別中的資料或函式宣告為 static,它們就變成不依賴實體(instance)運作的全域變數與全域函式,可以直接依據類別明撐以 :: 運算子取用,等於是有了全域變數與全域函式的效果。

static 函式成員當中不可以使用任何非 static 變數成員。



參考自 http://shukaiyang.myweb.hinet.net/courses/cpp/static.zhtw.htm

wxWidgets 裝入Dev C++

2010年7月4日 星期日

基本上就是參考下面這個網站...
http://wiki.wxwidgets.org/Dev-CPP_Setup_Guide

只要下載 "Preparing Dev-Cpp" 中的三個DevPak(最後一個contrib不知道可以做什麼所以沒裝)
先裝 imagelib-2
再裝 WxWindows-2.4.2
都是點兩下就好
原本以為跟裝opencv時一樣要加一堆路徑等等
都不用!!
沒錯就是這麼簡單

開啟範例Project之後就可以run啦~~

但是....難的正要開始....

科學符號

2010年6月30日 星期三

指數符號 "e":

用於表示非常大或非常小的數字
ex.
2000000000 => 2e9 或是 2e+9
表示2乘以10的9次方
0.000005 => 2e-6

OpenCV找不到libcxcore200.dll

2010年6月3日 星期四

之前就碰到這個問題了但不知道為什麼之前沒goo到

選對關鍵字真的很重要阿

解決放法:

第一種方法
出現這個問題多數是因為環境變數PATH 未設置,安裝OpenCV後一定要檢查一下D:\Program Files\OpenCV2.0\vc2008\bin 是否已經加入到環境變數PATH 中,如果沒有就添加該路徑。設置環境變數的方法為:我的電腦 -> 屬性-> 高級-> 環境變數-> PATH -> D:\Program Files\OpenCV2.0\vc2008\bin(根據當前電腦上OpenCV 2.0 的安裝路徑進行設置,若設置多個路徑,則用分號隔開)
第二種方法
有時上面這種方法已經設置好,但還是出現問題,則只需要將D:\Program Files\OpenCV2.0\vc2008\bin 目錄下所有的 *.dll 檔拷貝到system32 下即可以解決問題。


參考網址 http://weni619.blog.163.com/blog/static/1220148932009119535659/

我用了第一個方法沒有用
再加上第二個方法就成功啦~~~~

繼續加油~~

GSL Dev C++ 設定

2010年4月15日 星期四

1. 下載 gsl












我們要下載的是GunWin32,所以點入圖中 files page 連結
下載 gsl-1.8.exe
安裝完之後就可以開始設定Dev C++了

2. Dev C++ 編譯器選項 -> 編譯器














第一個框框加入 -lgsl -lgslcblas -lm
第二個框框加入 -lgsl -lm

3. 目錄 -> 二進位檔


















4. 目錄 -> 函式庫


















5. 目錄 -> C++引入檔


















6.
以上步驟完成後,將 C:\Program Files\GnuWin32\bin 目錄下的 libgsl.dll, libgslcblas.dll 兩個檔案複製到 C:\Windows\System32 中,即可。

參考網址
http://www.math.ncu.edu.tw/~yu/sc97/boards/gsl-install.html
http://read.newbooks.com.cn/info/195035.html

仿射轉換 Affine Transformation

2010年4月14日 星期三

現在再旁聽視覺影像的課,最近常常出現"affine"這個字

字典只能查到"仿射"這兩個字
去網路上查也查不到affine image是什麼
倒是有些affine transformation的說明:

幾何上,兩個向量之間的一個仿射轉換是由一個
線性轉換接上一個平移所組成
x -> Ax + b

OpenCV Dev C++ 設定

OpenCV 是由Intel發起並參與開發是一個跨平台的計算機視覺
全名叫做
Open Source Computer Vision Library。

(0) 請先安裝Dev_C++

(1) 安裝OpenCV 2.0 for win32
將裝在C:\OpenCV2.0

(2) 在DEV 工具/編譯器選項/編譯器編譯器設定組態新增編譯器設定(加號按鈕)並命名為"OpenCV2.0"

(3) 在連結器命令列中加入以下命令(前面框號要打勾)
-llibcxcore200 -llibcv200 -llibcvaux200 -llibhighgui200 -llibml200

(4) 在DEV 工具/編譯器選項/目錄/二進位檔 加入:
C:\OpenCV2.0\bin
C:\Dev-Cpp\Bin
C:\Dev-Cpp\libexec\gcc\mingw32\3.4.2

(5) 在DEV 工具/編譯器選項/目錄/函式庫 加入:
C:\OpenCV2.0\lib
C:\Dev-Cpp\lib

(6) 在DEV 工具/編譯器選項/目錄/C引入檔 加入:
C:\OpenCV2.0\include\opencv
C:\Dev-Cpp\include

(7) 在DEV 工具/編譯器選項/目錄/C++引入檔 加入:
C:\OpenCV2.0\include\opencv
C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include
C:\Dev-Cpp\include\c++\3.4.2\backward
C:\Dev-Cpp\include\c++\3.4.2\mingw32
C:\Dev-Cpp\include\c++\3.4.2
C:\Dev-Cpp\include

(8) 在C:\OpenCV2.0\include\opencv中找到cxoperations.hpp

(9) 找到檔中第66行部分程式碼如下
#else
#include
#if __GNUC__ >= 4

(10) 將它改成如下程式碼並儲存
#else
#include
#if __GNUC__ >= 4
|| __MINGW32__

(11) 每次開新的專案必須在專案中選擇新建的編譯器設定(OpenCV2.0)
我第一次弄時就是忘記這步驟弄了好幾個小時都編譯不成功呢~~
以後不要忘記囉!!

















此文參考自 http://www.wretch.cc/blog/logicdiafat/24488155

新的網誌

其實已經有另外一個學習網誌了

但是因為關於電腦、程式語言的東西會相當多
如果和其他學習一起會有一點雜亂所以希望分開

還是喜歡筆記本行的風格

加油囉~~