看板 C_and_CPP 關於我們 聯絡資訊
抱歉~回一篇好了... 第一次接觸到_popen()這個API 發現滿好用的 原PO下的指令:/dir /b /s 可以列出檔案路徑~ 他應該是想要把特定資料夾的.tiff檔抓出 以下為修改: void getDir(....) { ... string pCmd = "dir /b /s "; pCmd += '"'+string(d) + '"'; ... ... ... } int main(....) { ... string str=files[0]; str.pop_back(); // remove "\n" ... ... } 之後就能餵進opencv了 ※ 引述《LCY1983 (陽光男)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Visual Studio 2010 C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : OpenCV : 問題(Question): : imread讀入影像路徑後,卻發現是空的 : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : 程式碼(Code):(請善用置底文網頁, 記得排版) : #include <cv.h> : #include <highgui.h> : #include <opencv2/imgproc/imgproc.hpp> : #include <opencv2/opencv.hpp> : #include "iostream" : #include <vector> : #include <fstream> : using namespace cv; : using namespace std; : void getDir(const char* d, vector<string> & f) : { : FILE* pipe = NULL; : string pCmd = "dir /b /s " + string(d); : char buf[256]; : if( NULL == (pipe = _popen(pCmd.c_str(),"rt"))) : { : cout<<"Shit"<<endl; : return; : } : while (!feof(pipe)) : { : if(fgets(buf,256,pipe) != NULL) : { : f.push_back(string(buf)); : } : } : _pclose(pipe); : } : int main(int argc, char* argv[]) : { : vector<string> files; : getDir("Z:\\Bryant\\試片受潮測試\\20150414\\10\\2nd\\myfilename000.tiff", : files); : string str=files[0]; : Mat original_image; : original_image=imread(str); : system("pause"); : return 0; : } : 補充說明(Supplement): : build up是成功的 : 可是,設中斷點於original_image時候 : 於區域變數看到dims竟然是0 : data那裡出現 錯誤Ptr (無法評估運算式) : 請問各位高手,是哪裡出問題? : 這問題困擾我3天了,尋遍各種方法皆無效 : 謝謝大家幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.117.187 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429615774.A.458.html
LCY1983: 謝謝你呀!晚點來嘗試,不過,我用其他方法解決了 XD 04/21 20:56
LCY1983: dir這個指令,雖然古老,可是,整篇程式碼,卻是最少行! 04/21 20:58
LCY1983: 這是它迷人之處呀 XD 04/21 20:58
LCY1983: 再次感謝你,你的方法可以成功執行!太棒了! 04/21 22:25
suhorng: 所以問題是結尾的 '\n' 嗎? 之前推文有說過的說@@ 04/21 22:41