最近在寫檔案操作的功能, 就是選擇一個檔案然後做複製或刪除的動作.
以下是選擇檔案的部份程式碼:
wchar_t fileName[256];
OPENFILENAME opf;
ZeroMemory(&opf, sizeof(opf));
opf.hwndOwner = 0;
opf.lpstrFilter = L"All Files(*.*)\0\*.*\0\0";
//opf.lpstrFilter = L"JPG Files\0*.jpg\0BMP Files\0*.bmp\0PNG Files\0*.png\0\0";
opf.nFilterIndex = 1;
opf.lpstrFile = fileName;
opf.lpstrFile[0] = L'\0';
opf.nMaxFile = sizeof(fileName);
opf.lpstrFileTitle = 0;
opf.nMaxFileTitle = 0;
opf.lpstrInitialDir = L"C:\\";
opf.lpstrTitle = L"select file";
opf.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
opf.lStructSize = sizeof(opf);
if(GetOpenFileName(&opf)
{
do something...
}
而複製檔案就使用 CopyFile(srcFile, dstFile, true), 刪除則是 DeleteFile(file).
MSDN有範例, 該頁面還有其他功能, 如選擇顏色等, 連結如下:
http://msdn.microsoft.com/en-us/library/ms646829
2011年3月31日 星期四
2011年3月30日 星期三
OpenCV 2.2.0 on Qt (Win7)
最近開始學習 Qt 這個誇平台的東東, OpenCV 也是支援誇平台的.
當然順理成章把 OpenCV 放到 Qt 上玩玩, 以下說明:
在 .pro 檔內加入 include 及 lib 即可.
INCLUDEPATH += C:\OpenCV-2.2.0\include
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_core220.lib
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_highgui220.lib
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_imgproc220.lib
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_video220.lib
若是用 mingw
則可將 Qt 內附的 mingw 加入系統環境變數.
再使用 CMake 建置 mingw 的資料夾.
打開 cmd 畫面, 再移到 OpenCV-2.2.0\mingw 資料夾下
輸入指令: mingw32-make 即可產生 dll 及 lib檔.
INCLUDEPATH += C:\OpenCV-2.2.0\include
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_core220.dll.a
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_highgui220.dll.a
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_imgproc220.dll.a
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_video220.dll.a
最後記得將相關 dll 檔放入執行資料夾.
當然順理成章把 OpenCV 放到 Qt 上玩玩, 以下說明:
在 .pro 檔內加入 include 及 lib 即可.
INCLUDEPATH += C:\OpenCV-2.2.0\include
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_core220.lib
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_highgui220.lib
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_imgproc220.lib
LIBS += C:\OpenCV-2.2.0\VS2010\lib\Release\opencv_video220.lib
若是用 mingw
則可將 Qt 內附的 mingw 加入系統環境變數.
再使用 CMake 建置 mingw 的資料夾.
打開 cmd 畫面, 再移到 OpenCV-2.2.0\mingw 資料夾下
輸入指令: mingw32-make 即可產生 dll 及 lib檔.
INCLUDEPATH += C:\OpenCV-2.2.0\include
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_core220.dll.a
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_highgui220.dll.a
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_imgproc220.dll.a
LIBS += C:\OpenCV-2.2.0\mingw\lib\libopencv_video220.dll.a
最後記得將相關 dll 檔放入執行資料夾.
2011年3月23日 星期三
實物投影 on 空間設計
實物投影(也有人稱建築投影或光雕投影)的一種應用.
之前國外也有在室外使用建築投影的方式做些動畫的呈現.
國內其實也是有展示過幾次, 以下影片是荷蘭一間公司將它應用在室內空間設計上.
感覺 IKEA 可以學學, 一方面可以省掉不少定期更換傢俱的成果, 另一方面亦可
在網頁上呈現, 造福一下中部的鄉親丫!
之前國外也有在室外使用建築投影的方式做些動畫的呈現.
國內其實也是有展示過幾次, 以下影片是荷蘭一間公司將它應用在室內空間設計上.
感覺 IKEA 可以學學, 一方面可以省掉不少定期更換傢俱的成果, 另一方面亦可
在網頁上呈現, 造福一下中部的鄉親丫!
前置處理器 for C\C++
之前都有在使用前置處理器, 但僅限於 #ifdef, #else, #endif.
今天突然想用到 else if define 時卻發現並沒有這關鍵字, 就上網找了一下, 做個記錄.
else if --> #elif
#ifdef ABC = #if defined ABC
#ifndef ABC = #if !defined ABC
#undef ABC --> 消除 ABC 之定義
今天突然想用到 else if define 時卻發現並沒有這關鍵字, 就上網找了一下, 做個記錄.
else if --> #elif
#ifdef ABC = #if defined ABC
#ifndef ABC = #if !defined ABC
#undef ABC --> 消除 ABC 之定義
2011年3月21日 星期一
2011年3月18日 星期五
Register OCX in Win 7
發現在 XP 轉到 Win7 還是有許多不適應, 尤其是多了個"系統管理員執行".
今天發生了個錯誤如下:
呼叫 DllRegisterServer 失敗, 錯誤碼為 0x80040200
解決方式:
系統管理員執行
今天發生了個錯誤如下:
呼叫 DllRegisterServer 失敗, 錯誤碼為 0x80040200
解決方式:
系統管理員執行
2011年3月16日 星期三
OpenCV 2.2.0 in Windows & Mac
最近在用 OpenCV 發現一個很怪的現象, 就是目前最新版本 v2.2.0, 當我在使用 Mac 的 bootcamp之下的 Win 7 系統, 編譯後執行會無法顯示出 webcam 畫面, 但反觀在其他 Windows 的筆電確可以很正常的顯示...在尚未解決的情況下...只好如下使用:
Windows : OpenCV 2.2.0
Mac : OpenCV 2.1.0
Windows : OpenCV 2.2.0
Mac : OpenCV 2.1.0
顏色辨識(手指)
來了第一週就有確認了題目, 遊戲與復健的結合!
與一位陽明醫工博班的學生一起研究, 開始了手指辨識這件事.
一開始先找找國內外相關的研究或實作成果, 發現多數是手勢和臉居多.
但我們想要的是針對不同手指來做指令上的操作, 就只好從基本的 OpenCV 開始.
發現範例有個顏色辨識的範例, 修修改改後有些成果, 放個圖來記錄一下.
與一位陽明醫工博班的學生一起研究, 開始了手指辨識這件事.
一開始先找找國內外相關的研究或實作成果, 發現多數是手勢和臉居多.
但我們想要的是針對不同手指來做指令上的操作, 就只好從基本的 OpenCV 開始.
發現範例有個顏色辨識的範例, 修修改改後有些成果, 放個圖來記錄一下.
2011年3月14日 星期一
GetLastError in MSDN
以下網址即可找到錯誤訊息.
http://msdn.microsoft.com/en-us/library/ms681381
以下是 MSDN
void ErrorExit(LPTSTR lpszFunction)
{
// Retrieve the system error message for the last-error code
LPVOID lpMsgBuf;
LPVOID lpDisplayBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
// Display the error message and exit the process
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
(lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR));
StringCchPrintf((LPTSTR)lpDisplayBuf,
LocalSize(lpDisplayBuf) / sizeof(TCHAR),
TEXT("%s failed with error %d: %s"),
lpszFunction, dw, lpMsgBuf);
MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
LocalFree(lpMsgBuf);
LocalFree(lpDisplayBuf);
ExitProcess(dw);
}
void main()
{
// Generate an error
if(!GetProcessId(NULL))
ErrorExit(TEXT("GetProcessId"));
}
http://msdn.microsoft.com/en-us/library/ms681381
以下是 MSDN
void ErrorExit(LPTSTR lpszFunction)
{
// Retrieve the system error message for the last-error code
LPVOID lpMsgBuf;
LPVOID lpDisplayBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
// Display the error message and exit the process
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
(lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR));
StringCchPrintf((LPTSTR)lpDisplayBuf,
LocalSize(lpDisplayBuf) / sizeof(TCHAR),
TEXT("%s failed with error %d: %s"),
lpszFunction, dw, lpMsgBuf);
MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
LocalFree(lpMsgBuf);
LocalFree(lpDisplayBuf);
ExitProcess(dw);
}
void main()
{
// Generate an error
if(!GetProcessId(NULL))
ErrorExit(TEXT("GetProcessId"));
}
2011年3月10日 星期四
2011年3月8日 星期二
OpenCV 2.0 on VS2010 編譯錯誤解決方式
錯誤訊息
error C3861: 'back_inserter': identifier not found
解決方法
1.在 OpenCV2.0\src\cvaux\cvhog.cpp 開頭加入 #include <iterator>
2.在 OpenCV2.0\src\cv\cvmodelset.cpp 開頭加入 #include <iterator>
error C3861: 'back_inserter': identifier not found
解決方法
1.在 OpenCV2.0\src\cvaux\cvhog.cpp 開頭加入 #include <iterator>
2.在 OpenCV2.0\src\cv\cvmodelset.cpp 開頭加入 #include <iterator>
Havok on Android 2.3
Havok 一個知名的物理引擎,目前釋出支援 Android 2.3 版本。
從癮科技看到相關報導,並有在 Sony Ericsson Xperia Play 上的影片。
從癮科技看到相關報導,並有在 Sony Ericsson Xperia Play 上的影片。
研究主題
老師給了個主題,是跟一位陽明醫工博班的學生合作。
提出將遊戲與醫療復健結合的平台,開始了看 paper 的工作,自己英文真是爛的可以,
幾乎都靠 google 翻譯來閱讀,好好惡補一下吧我!
第一次 meeting 結果,先從老人中風開始,使用手勢辨識來操作,一來使用者不需穿戴 sensor ,
二來建置成本低(扣掉電腦只需要一台 camera),看來要開始找找相關資料哩。
發現老師講話很直!
提出將遊戲與醫療復健結合的平台,開始了看 paper 的工作,自己英文真是爛的可以,
幾乎都靠 google 翻譯來閱讀,好好惡補一下吧我!
第一次 meeting 結果,先從老人中風開始,使用手勢辨識來操作,一來使用者不需穿戴 sensor ,
二來建置成本低(扣掉電腦只需要一台 camera),看來要開始找找相關資料哩。
發現老師講話很直!
3/1報到
過了個228連假,一大早坐電車到南港火車站,然後走路去坐公車。
帶著資料跟 Rita 跑來跑去辦報到手續,結果因為我還是學生身份無法用專任助理聘任,
瞬間薪水少了1萬...只能先用博士研究生聘任,還不能保勞健保!(PS:工讀生可)
第一天心得:等等等
-院內的郵局很多人,寄信、領錢、匯款都要排隊。
-院內的萊爾富很多人,結帳付錢要排隊。(PS:院內卡在手,一律89折)
訂閱:
文章 (Atom)