| | |
| | | if(a.w == 0) return copy_image(b); |
| | | image c = make_image(a.w + b.w + dx, (a.h > b.h) ? a.h : b.h, (a.c > b.c) ? a.c : b.c); |
| | | fill_cpu(c.w*c.h*c.c, 1, c.data, 1); |
| | | embed_image(a, c, 0, 0); |
| | | embed_image(a, c, 0, 0); |
| | | composite_image(b, c, a.w + dx, 0); |
| | | return c; |
| | | } |
| | |
| | | return delta < 0 ? -1 : delta > 0 ? 1 : 0; |
| | | } |
| | | |
| | | // compare to sort detection** by best_class probability |
| | | // compare to sort detection** by best_class probability |
| | | int compare_by_probs(const void *a_ptr, const void *b_ptr) { |
| | | const detection_with_class* a = (detection_with_class*)a_ptr; |
| | | const detection_with_class* b = (detection_with_class*)b_ptr; |
| | |
| | | if(top < 0) top = 0; |
| | | if(bot > im.h-1) bot = im.h-1; |
| | | printf("%s: %.0f%%", names[class_id], prob * 100); |
| | | |
| | | |
| | | //printf(" - id: %d, x_center: %d, y_center: %d, width: %d, height: %d", |
| | | // class_id, (right + left) / 2, (bot - top) / 2, right - left, bot - top); |
| | | |
| | |
| | | rgb[1] = green; |
| | | rgb[2] = blue; |
| | | box b = dets[i].bbox; |
| | | b.w = (b.w < 1) ? b.w : 1; |
| | | b.h = (b.h < 1) ? b.h : 1; |
| | | b.x = (b.x < 1) ? b.x : 1; |
| | | b.y = (b.y < 1) ? b.y : 1; |
| | | //printf("%f %f %f %f\n", b.x, b.y, b.w, b.h); |
| | | |
| | | int left = (b.x - b.w / 2.)*show_img->width; |
| | |
| | | |
| | | cvRectangle(show_img, pt1, pt2, color, width, 8, 0); |
| | | if (ext_output) |
| | | printf("\t(left_x: %4.0f top_y: %4.0f width: %4.0f height: %4.0f)\n", |
| | | printf("\t(left_x: %4.0f top_y: %4.0f width: %4.0f height: %4.0f)\n", |
| | | (float)left, (float)top, b.w*show_img->width, b.h*show_img->height); |
| | | else |
| | | printf("\n"); |
| | | |
| | | cvRectangle(show_img, pt_text_bg1, pt_text_bg2, color, width, 8, 0); |
| | | cvRectangle(show_img, pt_text_bg1, pt_text_bg2, color, CV_FILLED, 8, 0); // filled |
| | | CvScalar black_color; |
| | |
| | | cvPutText(show_img, labelstr, pt_text, &font, black_color); |
| | | } |
| | | } |
| | | if (ext_output) { |
| | | fflush(stdout); |
| | | } |
| | | } |
| | | |
| | | void draw_detections_cv(IplImage* show_img, int num, float thresh, box *boxes, float **probs, char **names, image **alphabet, int classes) |
| | |
| | | CvScalar black_color; |
| | | black_color.val[0] = 0; |
| | | CvFont font; |
| | | cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, font_size, font_size, 0, font_size * 3, 8); |
| | | cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, font_size, font_size, 0, font_size * 3, 8); |
| | | cvPutText(show_img, names[class_id], pt_text, &font, black_color); |
| | | } |
| | | } |
| | |
| | | |
| | | IplImage *disp = cvCreateImage(cvSize(p.w,p.h), IPL_DEPTH_8U, p.c); |
| | | int step = disp->widthStep; |
| | | cvNamedWindow(buff, CV_WINDOW_NORMAL); |
| | | cvNamedWindow(buff, CV_WINDOW_NORMAL); |
| | | //cvMoveWindow(buff, 100*(windows%10) + 200*(windows/10), 100*(windows%10)); |
| | | ++windows; |
| | | for(y = 0; y < p.h; ++y){ |
| | |
| | | } |
| | | else src = cvQueryFrame(cap); |
| | | |
| | | if (cpp_video_capture) |
| | | if (cpp_video_capture) |
| | | if(!wait_for_stream(cap, src, dont_close)) return make_empty_image(0, 0, 0); |
| | | IplImage* new_img = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, c); |
| | | *in_img = cvCreateImage(cvSize(src->width, src->height), IPL_DEPTH_8U, c); |
| | |
| | | for(k = 0; k < fore.c; ++k){ |
| | | for(j = 0; j < fore.h; ++j){ |
| | | for(i = 0; i < fore.w; ++i){ |
| | | float val = alpha * get_pixel(fore, i, j, k) + |
| | | float val = alpha * get_pixel(fore, i, j, k) + |
| | | (1 - alpha)* get_pixel(back, i, j, k); |
| | | set_pixel(blend, i, j, k, val); |
| | | } |
| | |
| | | float dx = x - ix; |
| | | float dy = y - iy; |
| | | |
| | | float val = (1-dy) * (1-dx) * get_pixel_extend(im, ix, iy, c) + |
| | | dy * (1-dx) * get_pixel_extend(im, ix, iy+1, c) + |
| | | float val = (1-dy) * (1-dx) * get_pixel_extend(im, ix, iy, c) + |
| | | dy * (1-dx) * get_pixel_extend(im, ix, iy+1, c) + |
| | | (1-dy) * dx * get_pixel_extend(im, ix+1, iy, c) + |
| | | dy * dx * get_pixel_extend(im, ix+1, iy+1, c); |
| | | return val; |
| | |
| | | |
| | | image resize_image(image im, int w, int h) |
| | | { |
| | | image resized = make_image(w, h, im.c); |
| | | image resized = make_image(w, h, im.c); |
| | | image part = make_image(w, im.h, im.c); |
| | | int r, c, k; |
| | | float w_scale = (float)(im.w - 1) / (w - 1); |
| | |
| | | free_image(copy); |
| | | } |
| | | return filters; |
| | | } |
| | | } |
| | | |
| | | image collapse_images_horz(image *ims, int n) |
| | | { |
| | |
| | | free_image(copy); |
| | | } |
| | | return filters; |
| | | } |
| | | } |
| | | |
| | | void show_image_normalized(image im, const char *name) |
| | | { |