Re: [問題] 影像載入出錯

作者: GoIt (凍物。)   2015-04-21 19:29:32
抱歉~回一篇好了...
第一次接觸到_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天了,尋遍各種方法皆無效
: 謝謝大家幫忙
作者: LCY1983 (陽光男)   2015-04-21 20:56:00
謝謝你呀!晚點來嘗試,不過,我用其他方法解決了 XDdir這個指令,雖然古老,可是,整篇程式碼,卻是最少行!這是它迷人之處呀 XD再次感謝你,你的方法可以成功執行!太棒了!
作者: suhorng ( )   2015-04-21 22:41:00
所以問題是結尾的 '\n' 嗎? 之前推文有說過的說@@

Links booklink

Contact Us: admin [ a t ] ucptt.com