yolo2检测到的物体位置输出
来源:互联网 发布:知否 书包网 编辑:程序博客网 时间:2024/06/09 21:05
说明
检测到的物体被box所标记,输出box所在的位置,并存储到txt中。(待完善,如何根据每个图片名字存储不同的txt)
进入src/image.c,修改void draw_detections函数。
void draw_detections(image im, int num, float thresh, box *boxes, float **probs, float **masks, char **names, image **alphabet, int classes){ int i; char a[100]; FILE *fp; if((fp=fopen("/home/maqy/darknet/ship.txt","w"))==NULL){ printf("/home/maqy/darknet/ship.txt can't open\n"); exit(1); } int shipnum=0;//船的数量 for(i = 0; i < num; ++i){ int class = max_index(probs[i], classes); float prob = probs[i][class]; if(prob > thresh){ ++shipnum;//如果高于阈值,就数目加1 int width = im.h * .006; if(0){ width = pow(prob, 1./2.)*10+1; alphabet = 0; } //printf("%d %s: %.0f%%\n", i, names[class], prob*100); printf("%s: %.0f%% ", names[class], prob*100); int offset = class*123457 % classes; float red = get_color(2,offset,classes); float green = get_color(1,offset,classes); float blue = get_color(0,offset,classes); float rgb[3]; //width = prob*20+2; rgb[0] = red; rgb[1] = green; rgb[2] = blue; box b = boxes[i]; int left = (b.x-b.w/2.)*im.w;//距离图片左边界的值 right-left为box宽度 int right = (b.x+b.w/2.)*im.w; int top = (b.y-b.h/2.)*im.h;//距离图片上边界的值 bot-top为box高度 int bot = (b.y+b.h/2.)*im.h; if(left < 0) left = 0; if(right > im.w-1) right = im.w-1; if(top < 0) top = 0; if(bot > im.h-1) bot = im.h-1; //maqy-输出box的位置 printf("%d %d %d %d\n", left, right, top, bot); sprintf(a,"%d %d %d %d\n",left,right,top,bot); printf("a:%s\n",a); fputs(a,fp); draw_box_width(im, left, top, right, bot, width, red, green, blue); if (alphabet) { image label = get_label(alphabet, names[class], (im.h*.03)/10); draw_label(im, top + width, left, label, rgb); free_image(label); } if (masks){ image mask = float_to_image(14, 14, 1, masks[i]); image resized_mask = resize_image(mask, b.w*im.w, b.h*im.h); image tmask = threshold_image(resized_mask, .5); embed_image(tmask, im, left, top); free_image(mask); free_image(resized_mask); free_image(tmask); } } } printf("shipNum:%d\n",shipnum);//输出船的数目. sprintf(a,"%d\n",shipnum); printf("a:%s",a); rewind(fp);//回到文件开头 fputs(a,fp); fclose(fp);}
修改完后需要对darknet重新编译。
修改完后的终端输出:
存储的txt,第一行表示检测出来的总数
阅读全文
0 0
- yolo2检测到的物体位置输出
- yolo2 检测到的物体输出2
- 深度学习物体检测(八)——YOLO2
- 物体到另一个位置的动画
- 在YOLO2中增加自己的物体识别(一)
- 在YOLO2中增加自己的物体识别(二)
- 在YOLO2中增加自己的物体识别
- 【OpenCV_contri】找出任意物体可能在的位置(Selective search,物体检测)
- unity 移动物体到指定位置的四种方法
- ARKit如果检测到新的平面就 生成物体
- 物体检测的总结
- 我的Unity(1)一点一滴 鼠标点击任意位置,物体移动到该位置。
- Unity3d物体运动到指定位置
- Unity移动物体到鼠标点击位置
- 鼠标点击物体移动到该位置
- 物体检测-从RCNN到YOLO
- 物体检测-从RCNN到YOLO
- 物体检测-从RCNN到YOLO
- F
- Debug Assertion Failed!错误 关于m_File.m_hFile != NULL 和m_File.m_hFile != CFile::hFileNull 问题
- HTTP中的一些概念
- MySQL 浮点类型
- 数理逻辑1 -- 命题演算1
- yolo2检测到的物体位置输出
- 指针与数组名之间的区别
- cocos项目打包成安装后显示中文名的apk文件
- Android Studio Debug调试技巧集合
- centos7下php安装Redis扩展
- arttemplate 函数使用有感
- Android-socket的基本使用,发送文字和图片以及心跳
- Linux基础(一)(1)
- python中的selenium中的鼠标悬停事件!