yosinski / deep-visualization-toolbox

DeepVis Toolbox
http://yosinski.com/deepvis
MIT License
4.01k stars 927 forks source link

BGR->RGB convert issue #15

Open bairdzhang opened 9 years ago

bairdzhang commented 9 years ago

Hi,

After deploying this project successfully, I tried to run ./run_toolbox.py, but I got the following error and traceback:

  File "./run_toolbox.py", line 29, in <module>
    main()
  File "./run_toolbox.py", line 24, in main
    lv.run_loop()
  File "/home/zszhang/caffetoolbox/deep-visualization-toolbox/core.py", line 405, in run_loop
    self.display_frame(latest_frame_data)
  File "/home/zszhang/caffetoolbox/deep-visualization-toolbox/core.py", line 526, in display_frame
    self.panes['input'].data[:] = frame_disp
ValueError: could not broadcast input array from shape (270,270) into shape (270,270,3)

Then I read some of the source code, I found the im = im[:,:,::-1] may not work well on my system. I changed the im = im[:,:,::-1] to im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) in cv2_read_file_rgb and changed cv2.imshow(window_name, img[:,:,::-1]) to img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) and cv2.imshow(window_name, img) in cv2_imshow_rgb, then everything goes well (Only static image files are used).

I don't know whether it is a general issue or it happens because my system configuration is odd or incorrect. Any ideas?

Thanks, Baird

yosinski commented 9 years ago

@bairdzhang Thanks for reporting.

I think the root of the problem is that cv2.imread returns a 2D numpy array instead of 3D array. On my system it seems always to return a 3D array even for grayscale images. I pushed a fix for this to the dev branch (dcefb9a75); can you try it on your system?

bairdzhang commented 9 years ago

@yosinski The len(im.shape) is 3 for me before or after im = im[:,:,::-1].

And when I print im[1,1,:] before and after im = im[:,:,::-1], the channels do inverse. Before im = im[:,:,::-1], I can use imshow to show the image, however, after im = im[:,:,::-1], imshow cannot show the image and give this error message:

Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat.

I'm using OpenCV 2.3.1, and It's really odd to happen that error.

georgiazhang commented 7 years ago

@bairdzhang hi,did you solve the problem? I get this:ValueError: could not broadcast input array from shape (300,300) into shape (300,300,3) Even though i changed the code as https://github.com/yosinski/deep-visualization-toolbox/commit/dcefb9a759b74cdf6cd30314d021cd5af099f5f4 If you solve the problem,can you please tell me ?

@yosinski Thanks for your great work! I want to run the original data as you provided,but when ./run_toolbox.py,i get the same error even i changed the code as you fixed.Can you help me with this issue?Thank you very much!

arikpoz commented 6 years ago

@bairdzhang, @georgiazhang I've added support for grayscale based networks, and also for color based networks loading a grayscale image

Latest version is in https://github.com/arikpoz/deep-visualization-toolbox