作者GoIt (凍物。)
看板C_and_CPP
標題Re: [問題] 影像載入出錯
時間Tue Apr 21 19:29:32 2015
抱歉~回一篇好了...
第一次接觸到_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