Commit fbf0ab021de1c810bc1ce4398e692587a8f28144
1 parent
d32a1854
added support for the new image interface
Showing
3 changed files
with
24 additions
and
9 deletions
Show diff stats
envi/envi.h
image/image.h
1 | 1 | #ifndef STIM_IMAGE_H |
2 | 2 | #define STIM_IMAGE_H |
3 | 3 | |
4 | +#include "CImg.h" | |
5 | + | |
4 | 6 | #include <iostream> |
5 | 7 | //This static class provides the STIM interface for loading images |
6 | 8 | // Use this interface for all image management - that way the actual library can be changed without problems |
... | ... | @@ -10,7 +12,7 @@ |
10 | 12 | template <class T> |
11 | 13 | class image{ |
12 | 14 | |
13 | - CImg<T> data; | |
15 | + cimg_library::CImg<T> data; | |
14 | 16 | |
15 | 17 | public: |
16 | 18 | |
... | ... | @@ -25,8 +27,18 @@ public: |
25 | 27 | } |
26 | 28 | |
27 | 29 | //create an image from an interlaced buffer |
28 | - void create_interlaced(T* buffer, unsigned int channels = 1){ | |
30 | + void set_interleaved(T* buffer, unsigned int width, unsigned int height, unsigned int channels = 1){ | |
31 | + | |
32 | + unsigned char* non_interleaved = (unsigned char*)malloc(width * height * 3); | |
33 | + unsigned int S = width * height; | |
34 | + | |
35 | + for(unsigned int i = 0; i < S; i++){ | |
36 | + for(unsigned int c = 0; c < channels; c++){ | |
37 | + non_interleaved[i + c * S] = buffer[i * channels + c]; | |
38 | + } | |
39 | + } | |
29 | 40 | |
41 | + data = cimg_library::CImg<unsigned char>(non_interleaved, width, height, 1, channels); | |
30 | 42 | |
31 | 43 | } |
32 | 44 | ... | ... |
visualization/colormap.h
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | |
8 | 8 | //saving an image to a file uses the CImg library |
9 | 9 | //this currently throws a lot of "unreachable" warnings (as of GCC 4.8.2, nvcc 6.5.12) |
10 | -#include "../CImg/CImg.h" | |
10 | +#include "../image/image.h" | |
11 | 11 | |
12 | 12 | |
13 | 13 | #define BREWER_CTRL_PTS 11 |
... | ... | @@ -34,20 +34,23 @@ namespace stim{ |
34 | 34 | |
35 | 35 | enum colormapType {cmBrewer, cmGrayscale, cmRainbow}; |
36 | 36 | |
37 | -static void buffer2image(unsigned char* buffer, std::string filename, unsigned int x_size, unsigned int y_size) | |
37 | +static void buffer2image(unsigned char* buffer, std::string filename, unsigned int width, unsigned int height) | |
38 | 38 | { |
39 | - unsigned char* non_interleaved = (unsigned char*)malloc(x_size * y_size * 3); | |
39 | + /*unsigned char* non_interleaved = (unsigned char*)malloc(x_size * y_size * 3); | |
40 | 40 | unsigned int S = x_size * y_size; |
41 | 41 | |
42 | 42 | for(unsigned int i = 0; i < S; i++){ |
43 | 43 | non_interleaved[i + 0 * S] = buffer[i * 3 + 0]; |
44 | 44 | non_interleaved[i + 1 * S] = buffer[i * 3 + 1]; |
45 | 45 | non_interleaved[i + 2 * S] = buffer[i * 3 + 2]; |
46 | - } | |
46 | + }*/ | |
47 | 47 | |
48 | 48 | //create an image object |
49 | - cimg_library::CImg<unsigned char> image(non_interleaved, x_size, y_size, 1, 3); | |
50 | - image.save(filename.c_str()); | |
49 | + //cimg_library::CImg<unsigned char> image(non_interleaved, x_size, y_size, 1, 3); | |
50 | + //image.save(filename.c_str()); | |
51 | + image<unsigned char> I; | |
52 | + I.set_interleaved(buffer, width, height, 3); | |
53 | + I.save(filename); | |
51 | 54 | } |
52 | 55 | |
53 | 56 | #ifdef __CUDACC__ | ... | ... |