抱歉~回一篇好了...
第一次接觸到_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天了,尋遍各種方法皆無效
: 謝謝大家幫忙