Ask Your Question

imshow just opens a tiny window

asked 2017-09-11 22:00:41 -0500

import numpy as np import cv2

img = cv2.imread('C:\\Users\\mlarn\\Downloads\\20170818_171339.jpg',0)
#cv2.namedWindow('C:\\Users\\mlarn\\Downloads\\20170818_171339.jpg', cv2.WINDOW_NORMAL)
cv2.waitKey(0) & 0xFF

Just opens a window like this link

If I uncomment the WINDOW_NORMAL flag and resize the window, it is just black. link

I've tried it on multiple files of differing types and get the same result.

What am I doing wrong?

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted

answered 2017-09-12 01:58:00 -0500

VxW gravatar image


import cv2

img = cv2.imread('a.jpg', 0) #0=grayscale, 1=rgb
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
edit flag offensive delete link more

answered 2017-09-11 23:05:23 -0500

Tetragramm gravatar image

Well, the most important thing is that you are not actually giving it the image.

The imshow call has two parameters. The first is the name of the window, and the second is the image to show. So you're telling it to show the image 0. Try this:

cv2.imshow('Blah', img)
edit flag offensive delete link more


That's what I thought too, but

SyntaxError: invalid syntax
LorenWard gravatar imageLorenWard ( 2017-09-11 23:38:00 -0500 )edit

That is correct, that will not work. That is not the image, that is the path to the image. imread reads the image into memory. (The variable img in your code) imshow takes the image in memory and displays it.

Tetragramm gravatar imageTetragramm ( 2017-09-12 17:50:57 -0500 )edit

Oh, okay, I think I understand. Thank you!

So what does the "img" in cv2.imshow('Blah',img) mean?

This works now:

import numpy as np
import cv2

img = cv2.imread('C:\\Users\\mlarn\\Downloads\\20170818_171339.jpg',1)
#cv2.namedWindow('C:\\Users\\mlarn\\Downloads\\20170818_171339.jpg', cv2.WINDOW_NORMAL)
cv2.waitKey(0) & 0xFF

Also, the biggest problem I think I will have for the project I'm working on is the images I have are Geotiff files with an infrared layer. When I run the above code on one of the Geotif files, I just get a black image that matches the tilted footprint of the image itself. Same thing in Gimp.

LorenWard gravatar imageLorenWard ( 2017-09-12 18:01:12 -0500 )edit

Do you have any experience with python?

The line img = cv2.imread(...) takes the image path you give it, reads the image, and stores it in the variable named img. the function imshow(...) takes the name you give it for the window, and a variable containing an image, and displays the image.

The other thing is that the IR layer is probably a 16-bit image. The window divides the values by 256 before showing them, so if the image doesn't fill the full 16 bit range, it looks very dark. Try multiplying your image by a power of 2, like 32, or 64 before you display it.

Tetragramm gravatar imageTetragramm ( 2017-09-12 19:41:54 -0500 )edit
Login/Signup to Answer

Question Tools

1 follower


Asked: 2017-09-11 21:59:31 -0500

Seen: 214 times

Last updated: Sep 12 '17