[问题] 连续读档(fopen)无法fclose

楼主: jiqian (JIM)   2015-03-26 18:14:56
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
OpenCV
问题(Question):
我想要做出判断一个资料夹里面有多少张ABC%d.bmp的图
然后再拿最后一张图来做辨识
因此我想到的方法是用while配合fopen来rb找到最后一张
再用opencv来imread
但是目前情况是
1.辨识到第43张图时就会发生test和train档案大小不符
(应该是开到ABC%d+1.bmp空档去了)
2.只要我在程式后面加上fclose,进行辨识时就会发生
Caught SIGSEGV accessing address (nil)
Spinning. Please run 'gdb gst-launch 1321' to continue debugging, Ctrl-C to
quit, or Ctrl-\ to dump core.
困扰蛮久的,一直没办法找到好的方法解决,
麻烦大家帮忙看看了!谢谢!
程式码(SourceCode):
int count = 0;
char iconpath[200];
FILE *fp;
sprintf(iconpath,"/var/ABC%d.bmp",count);
fp=fopen(iconpath,"rb");
while(fp){
count++;
sprintf(iconpath,"/var/ABC%d.bmp",count);
fp=fopen(iconpath,"rb");
}
sprintf(iconpath,"/var/ABC%d.bmp",count-1);
Mat img = imread(iconpath, CV_LOAD_IMAGE_GRAYSCALE);
memset(iconpath,0x00,200);
int predicted_label = -1;
double predicted_confidence = 0.0;
model->predict(img, predicted_label, predicted_confidence);
*label=predicted_label;
*conf=predicted_confidence;
fclose(fp);
作者: LPH66 (-6.2598534e+18f)   2015-03-26 18:42:00
while() 里面新开一个档时先把旧的关掉另外你思考一下 while 出去的时候 fp 到底是什么东西这直接关系到你最后的 segfault再来, 要检查档案是否存在其实不只有开开看一个方法
作者: noodleT (面T)   2015-03-27 19:52:00
不考虑用 ls 列出档案?
作者: Dong0129 (阿东跟上面讲的情况一样b)   2015-03-29 17:03:00
python可以直接用os.system()叫出系统指令并执行c好像有python的lib可以用,可以试试喔
作者: dirkc (3781615)   2015-03-29 18:01:00
linux上opendir这里有个简例: http://ppt.cc/vumE读shell结果我这里有个简例: http://codepad.org/GlW5bmNmexec("find . -maxdepth 1 -type f -iname \'*.bmp\'-printf \'%f\\n\'") 两行贴起来不用std::string的话自己调整囉
作者: sunneo (艾斯寇德)   2015-03-31 00:55:00
你while(fp) 所以当然跳出循环的时候fp是nil啊可以用opendir, readdir跟access

Links booklink

Contact Us: admin [ a t ] ucptt.com