| | |
| | | |
| | | int windows = 0; |
| | | |
| | | void draw_box(image a, int x1, int y1, int x2, int y2) |
| | | { |
| | | int i, c; |
| | | if(x1 < 0) x1 = 0; |
| | | if(x1 >= a.w) x1 = a.w-1; |
| | | if(x2 < 0) x2 = 0; |
| | | if(x2 >= a.w) x2 = a.w-1; |
| | | |
| | | if(y1 < 0) y1 = 0; |
| | | if(y1 >= a.h) y1 = a.h-1; |
| | | if(y2 < 0) y2 = 0; |
| | | if(y2 >= a.h) y2 = a.h-1; |
| | | |
| | | for(c = 0; c < a.c; ++c){ |
| | | for(i = x1; i < x2; ++i){ |
| | | a.data[i + y1*a.w + c*a.w*a.h] = (c==0)?1:-1; |
| | | a.data[i + y2*a.w + c*a.w*a.h] = (c==0)?1:-1; |
| | | } |
| | | } |
| | | for(c = 0; c < a.c; ++c){ |
| | | for(i = y1; i < y2; ++i){ |
| | | a.data[x1 + i*a.w + c*a.w*a.h] = (c==0)?1:-1; |
| | | a.data[x2 + i*a.w + c*a.w*a.h] = (c==0)?1:-1; |
| | | } |
| | | } |
| | | } |
| | | |
| | | void jitter_image(image a, int h, int w, int dh, int dw) |
| | | { |
| | | int i,j,k; |
| | | for(k = 0; k < a.c; ++k){ |
| | | for(i = 0; i < h; ++i){ |
| | | for(j = 0; j < w; ++j){ |
| | | int src = j + dw + (i+dh)*a.w + k*a.w*a.h; |
| | | int dst = j + i*w + k*w*h; |
| | | //printf("%d %d\n", src, dst); |
| | | a.data[dst] = a.data[src]; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | image image_distance(image a, image b) |
| | | { |
| | | int i,j; |
| | |
| | | } |
| | | free_image(copy); |
| | | if(disp->height < 500 || disp->width < 500 || disp->height > 1000){ |
| | | int w = 1500; |
| | | int w = 500; |
| | | int h = w*p.h/p.w; |
| | | if(h > 1000){ |
| | | h = 1000; |
| | |
| | | image make_empty_image(int h, int w, int c) |
| | | { |
| | | image out; |
| | | out.data = 0; |
| | | out.h = h; |
| | | out.w = w; |
| | | out.c = c; |
| | |
| | | // Will do a scaled image resize with the correct aspect ratio. |
| | | outImg = resizeImage(croppedImg, newHeight, newWidth, 0); |
| | | cvReleaseImage( &croppedImg ); |
| | | |
| | | } |
| | | else { |
| | | |
| | |
| | | return out; |
| | | } |
| | | |
| | | image load_image_color(char *filename, int h, int w) |
| | | { |
| | | IplImage* src = 0; |
| | | if( (src = cvLoadImage(filename, 1)) == 0 ) |
| | | { |
| | | printf("Cannot load file image %s\n", filename); |
| | | exit(0); |
| | | } |
| | | if(h && w && (src->height != h || src->width != w)){ |
| | | //printf("Resized!\n"); |
| | | IplImage *resized = resizeImage(src, h, w, 0); |
| | | cvReleaseImage(&src); |
| | | src = resized; |
| | | } |
| | | image out = ipl_to_image(src); |
| | | cvReleaseImage(&src); |
| | | return out; |
| | | } |
| | | |
| | | image load_image(char *filename, int h, int w) |
| | | { |
| | | IplImage* src = 0; |