cv2.imshow 명령이 opencv-python에서 제대로 작동하지 않습니다.


111

opencv 2.4.2, python 2.7을 사용하고 있습니다. 다음 간단한 코드는 올바른 이름의 창을 만들었지 만 내용이 비어 있고 이미지가 표시되지 않습니다.

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)

누구든지이 문제에 대해 알고 있습니까?


파일 경로가 잘못되었을 수 있습니다. Windows는 /가 아닌 \를 사용합니다. OpenCV가 Windows에서 / 허용하는지 확실하지 않습니까? 수정해도 도움이되지 않으면 이미지가 올바른 위치에 있고 유효한 이미지인지 확인하십시오.
fmw42

이미지를 표시하는 읽기의 기초와 튜토리얼 /가 docs.opencv.org/master/dc/d2e/tutorial_py_image_display.html은
콘 정신

답변:


228

imshow()다음에서만 작동합니다 waitKey().

import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()

(창을 업데이트하는 데 필요한 전체 메시지 루프가 숨겨져 있습니다.)


3
check print imgNoneType객체가 아닌 올바른 numpy 배열을 인쇄 합니다.
Abid Rahman K

7
후세를 위해 분명히 말하면, 정상적인 상황에서는 이것이 정답이 될 것입니다. waitKey를 생략하면 (일반적으로) 질문에 설명 된 동작이 정확하게 나타납니다.
Snesticle 2015 년

45

여기에서 나를 위해 일한 답을 찾았습니다 .http : //txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html

대화 형 ipython 세션을 실행하고 highgui 창을 사용하려면 먼저 cv2.startWindowThread ()를 수행하십시오.

자세히 : HighGUI는 OpenCV 코드에서 이미지와 비디오를 표시하는 단순화 된 인터페이스입니다. 다음과 같이 쉬워야합니다.

import cv2
img = cv2.imread("image.jpg")
cv2.startWindowThread()
cv2.namedWindow("preview")
cv2.imshow("preview", img)

7
당신은) (cv2.destroyAllWindows에 의해 나중에 그것을 닫을 수 있습니다
Zuza

highgui의 QT 구현의 경우 startWindowThread ()는 아무 작업도 수행하지 않습니다. github.com/opencv/opencv/blob/...
kusi

24

cv2.waitKey(0)이후에 사용해야합니다 cv2.imshow("window",img). 그래야만 작동합니다.

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

이미지를 표시하기 위해 Python IDE를 설치해야 할 수도 있고 때로는 창을 찾아야 할 수도 있으며 때로는 창을 앞에 표시하지 않을 수도 있습니다. cv2.waitKey ()의 괄호는 밀리 초 단위이며 공백으로두면 이미지가 영원히 표시됩니다.
Ahmadiah

11

Python 콘솔 내에서 실행중인 경우 다음을 수행하십시오.

img = cv2.imread("yourimage.jpg")

cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()

그런 다음 Enter이미지 를 누르면 이미지가 성공적으로 닫히고 다른 명령을 계속 실행할 수 있습니다.


7

나는 같은 문제에 직면했다. IDLE에서 이미지를 읽고를 사용하여 표시하려고 cv2.imshow()했지만 표시 창이 멈춰 창 pythonw.exe을 닫으려고 할 때 응답하지 않습니다.

아래 게시물은 이것이 발생하는 이유에 대한 가능한 설명을 제공합니다.

pythonw.exe가 응답하지 않습니다.

" 기본적으로 IDLE에서이 작업을 수행하지 마십시오. 스크립트를 작성하고 .pyw 확장자로 이름을 지정하고 두 번 클릭하여 셸 또는 Windows의 경우 스크립트에서 직접 실행합니다. IDLE 자체 이벤트간에 충돌이있는 것 같습니다. 루프 및 GUI 툴킷의 것. "

imshow()스크립트에서 사용 하고 IDLE에서 직접 실행하는 대신 실행하면 작동했습니다.


링크가 오래 될 수 있으므로 링크에 제공된 설명을 추가하십시오 (최소한). 감사합니다 :)
achedeuzot

이 문제는 내가 "이렇게하지"...이하지만 이후 범프 내가) = 찾고 있어요 대답하지 않습니다
에릭


4

나를 위해 0보다 큰 숫자를 가진 waitKey ()가 작동했습니다.

    cv2.waitKey(1)

3

이 스레드 어딘가에 필요한 모든 부분이 있습니다.

if cv2.waitKey(): cv2.destroyAllWindows()

IDLE에서 잘 작동합니다.


3

이 작업을 수행하지 않은 경우

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

하나의 파일에 넣고 실행하십시오.


1

이후에 추가 메서드가 필요하지 않습니다 waitKey(0)(위 코드에 대한 응답).

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
cv2.waitKey(0)

창이 나타납니다-> 창을 클릭하고 Enter를 클릭하십시오. 창이 닫힙니다.


0

"cv2.waitKey (0)"를 사용하기로 선택한 경우 "cv2.waitkey (0)"대신 "cv2.waitKey (0)"를 작성했는지 확인하십시오. 소문자 "k"도 프로그램을 정지시킬 수 있기 때문입니다. .


3
소문자 키가있는 메서드가 API에 없습니다. 메서드가 존재하지 않기 때문에 코드에서 오류가 발생합니다.
rayryeng

0

또한 -215 오류가 발생했습니다. imshow가 문제라고 생각했지만 존재하지 않는 파일을 읽도록 imread를 변경했을 때 오류가 발생하지 않았습니다. 그래서 이미지 파일을 작업 폴더에 넣고 cv2.waitKey (0)를 추가하면 작동했습니다.


-1

오류 : (-215) 함수 imshow의 size.width> 0 && size.height> 0

이 오류는 이미지를 찾을 수 없기 때문에 생성됩니다. 따라서 imshow 함수의 오류가 아닙니다.


이 질문과 관련이 없습니다.
rayryeng

-1

C : \ Folder1 \ Folder2 \ filename.ext에서와 같이 이미지의 전체 경로를 제공하여 극복 할 수 있었던 동일한 215 오류가 발생했습니다.


"동일한 215 오류"는 무엇입니까? OPs 질문에는 언급 된 오류가 없습니다. 또한 OP는 이미지에 대한 전체 경로를 사용하므로 이것이 질문에 어떻게 답하는지 알 수 없습니다.
Max Vollmer 19 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.