From a284a7da8d1facbf984a22302665a2a50295a687 Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Wed, 08 Aug 2018 16:08:58 +0000
Subject: [PATCH] Try to use avx_hs() - slow and requires alignment 4096 bits < (l.size*l.size*l.c) May be faster only from 8192 bits and more.

---
 src/image.c |   31 ++++++++++++++++++-------------
 1 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/image.c b/src/image.c
index 4807371..7cf3dc0 100644
--- a/src/image.c
+++ b/src/image.c
@@ -102,7 +102,7 @@
     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;
 }
@@ -267,7 +267,7 @@
     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;
@@ -421,7 +421,7 @@
             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);
 
@@ -481,6 +481,10 @@
             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;
@@ -535,10 +539,11 @@
 
             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;
@@ -617,7 +622,7 @@
             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);
         }
     }
@@ -881,7 +886,7 @@
 
     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){
@@ -1057,7 +1062,7 @@
     }
     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);
@@ -1588,7 +1593,7 @@
     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);
             }
@@ -1708,8 +1713,8 @@
     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;
@@ -1717,7 +1722,7 @@
 
 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);
@@ -1931,7 +1936,7 @@
         free_image(copy);
     }
     return filters;
-} 
+}
 
 image collapse_images_horz(image *ims, int n)
 {
@@ -1967,7 +1972,7 @@
         free_image(copy);
     }
     return filters;
-} 
+}
 
 void show_image_normalized(image im, const char *name)
 {

--
Gitblit v1.10.0