Opencv 2.4.2, python 2.7 kullanıyorum Aşağıdaki basit kod, doğru adda bir pencere oluşturdu, ancak içeriği boş ve resmi göstermiyor:
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
bu konuyu bilen var mı?
Opencv 2.4.2, python 2.7 kullanıyorum Aşağıdaki basit kod, doğru adda bir pencere oluşturdu, ancak içeriği boş ve resmi göstermiyor:
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
bu konuyu bilen var mı?
Yanıtlar:
imshow()
sadece şunlarla çalışır waitKey()
:
import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()
(Pencereyi güncellemek için gereken mesaj döngüsünün tamamı burada gizlidir.)
print img
bir NoneType
nesne değil, doğru bir numpy dizisi yazdırır .
Benim için işe yarayan cevabı burada buldum: http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html
Etkileşimli bir ipython oturumu çalıştırırsanız ve highgui pencereleri kullanmak istiyorsanız, önce cv2.startWindowThread () işlemini yapın.
Ayrıntılı olarak: HighGUI, OpenCV kodundan görüntüleri ve videoları görüntülemek için basitleştirilmiş bir arayüzdür. O kadar kolay olmalı:
import cv2
img = cv2.imread("image.jpg")
cv2.startWindowThread()
cv2.namedWindow("preview")
cv2.imshow("preview", img)
Sen kullanmalısınız cv2.waitKey(0)
sonra cv2.imshow("window",img)
. Ancak o zaman işe yarayacak.
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)
Ben de aynı sorunla karşılaştım. IDLE'den bir görüntü okumaya ve kullanarak görüntülemeye çalıştım cv2.imshow()
, ancak pencereyi pythonw.exe
kapatmaya çalışırken ekran penceresi donuyor ve gösteriler yanıt vermiyor.
Aşağıdaki gönderi, bunun neden olduğuna dair olası bir açıklama verir.
" Temel olarak, bunu IDLE'den yapmayın. Bir komut dosyası yazın ve onu bir .pyw uzantısıyla adlandırarak ve çift tıklayarak, kabuktan veya doğrudan pencerelerdeyse komut dosyasını çalıştırın. Görünüşe göre IDLE'nin kendi olayı arasında bir çakışma var döngü ve GUI araç setlerinden olanlar. "
Bir imshow()
betikte kullandığımda ve doğrudan IDLE üzerinden çalıştırmak yerine çalıştırdığımda işe yaradı.
Bu konudaki tüm gerekli parçalara sahipsiniz:
if cv2.waitKey(): cv2.destroyAllWindows()
IDLE'de benim için iyi çalışıyor.
Sonrasında herhangi bir ek yönteme ihtiyaç duymaz waitKey(0)
(yukarıdaki kodu yanıtlayın)
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
cv2.waitKey(0)
Pencere açılır -> Pencereye tıklayın ve Enter'a tıklayın. Pencere kapanacak.
Yöntem 1:
Aşağıdaki kod benim için çalıştı. Sadece destroyAllWindows () eklemek pencereyi kapatmadı. Sonunda başka bir cv2.waitKey (1) eklemek işi yaptı.
im = cv2.imread("./input.jpg")
cv2.imshow("image", im)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(1)
kredi: https://stackoverflow.com/a/50091712/8109630
Yeni başlayanlar için not:
Yöntem 2:
Jupyter not defterinde görüntülemek istiyorsanız.
from matplotlib import pyplot as plt
import cv2
im = cv2.imread("./input.jpg")
color = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
plt.imshow(color)
plt.title('Image')
plt.show()
"Cv2.waitKey (0)" kullanmayı seçerseniz, "cv2.waitkey (0)" yerine "cv2.waitKey (0)" yazdığınızdan emin olun, çünkü bu küçük "k" harfi programınızı da dondurabilir .
error: (-215) size.width> 0 && size.height> 0 işlevinde imshow
Bu hata, görüntü bulunamadığı için üretilir. Yani imshow işlevinin bir hatası değil.
C: \ Folder1 \ Folder2 \ filename.ext örneğindeki gibi görüntünün tam yolunu vererek üstesinden gelebildiğim aynı 215 hatasını aldım.