Python Opencv hata alıyorum

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

# Resim Gri Skalada Okunur #
img = cv.imread("messi.jpg",0)


# Resime Görüntü Eşiklemeler Uygulanır #
ret,thresh1 = cv.threshold(img,127,255,cv.THRESH_BINARY)
ret,thresh2 = cv.threshold(img,127,255,cv.THRESH_BINARY_INV)
ret,thresh3 = cv.threshold(img,127,255,cv.THRESH_TRUNC)
ret,thresh4 = cv.threshold(img,127,255,cv.THRESH_TOZERO)
ret,thresh5 = cv.threshold(img,127,255,cv.THRESH_TOZERO_INV)

# Görüntü Ekranının İsimleri ve Değişkenleri Atanır #
titles = ["Original Image","BINARY","BINARY_INV","TRUNC","TOZERO","TOZERO_INV"]
images = [img,thresh1, thresh2, thresh3, thresh4, thresh5]



# Aynı Ekranda Thresholdlar Gözlenir #
for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],"gray")
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()

Siyah beyaz fotğrafa görüntü eşikleme uygulamaya çalıştım fakat hata alıyorum.Aldığım hata şu:

TypeError: Image data of dtype object cannot be converted to float

Bu hatayı internetten araştırdım fakat bulamadım. Yardımlarınızı bekliyorum?

Hatanın tam halini atın, satırını hataya bakıp anlayamıyoruz.

Oncelikle:

Hatanin ciktigi satir iki sey birden yapiyor, once onlari ayiriyoruz. (Kodun orijinali oyle, biliyorum, ama ayirmanin bir sey fark ettirmeyecegini de kullanan bilmek durumunda.)

Sonra goruyoruz ki hata

plt.imshow(images[i],"gray")

satirindan cikiyor. Burada iki ihtimal var; birincisi kutuphane kodunda bir hata var, ikincisi ise cagiran kodda bir hata var. Hangisi daha yuksek ihtimal?

Cagiran koda bakiyoruz, bir kutuphane fonksiyonunu iki parametreyle cagirmis. Iki ihtimal var; birincisi yanlis parametrelerle cagirmis, ikincisi ise yanlis zamanda cagirmis. Zamanlama/siralama bilgisi resmi dokumentasyon orneginden alindigina gore hangisi daha yuksek ihtimal?

Cagrilan parametre degerlerine bakiyoruz, kutuphane fonksiyonunun bekledigi degerlerle karsilastiriyoruz. Ilk parametre olarak “array-like veya PIL imaji” istiyor. Biz ne yolluyoruz? Ikinci parametre olarak “Colormap veya kayitli colormap ismi” veya None istiyor. Biz ne yolluyoruz?

2 Beğeni

İlginç, en kötü ihtimalle ; kullanılması lazım. Virgül okunaklılığı azaltıyor ve bir fonksiyona parametre yollanıyormuş gibi bir izlenim uyandırıyor bence.

Katiliyorum. “Duzelteyim, gozden kacmistir” dedim, ama:

(venv) 21:21:37 0 aib@vivaldi:/tmp/opencv% git grep ,plt | wc -l
60

Interpreter’a tek satir seklinde yazilip cevap tek satir seklinde donsun diye yapmislar bazi yerlerde.

Bende hata vermedi.

Figure_1

Bir de Windows’da deneyeyim.

Windows’da da hata almadım.

İşletim sistemi: Windows 7
Python sürümü: 3.8.1
Matplotlib sürümü: 3.1.3
Numpy sürümü: 1.18.1
Opencv sürümü: 4.2.0

Hocalarım sizin dediklerinizden pek bişey anlamadım bağışlayın. :smile:Hala sorunu çözemedim

İşletim sistemi: Windows 10 pro
Python sürümü: 3.7.0 ( sys.version ile buldum emin değilim )
Matplotlib sürümü: 3.2.1
Numpy sürümü: 1.18.2
Opencv sürümü: 4.2.0

Acaba sorun kullandığınız resim dosyasından kaynaklanıyor olabilir mi? :thinking:

hemen farklı resimle deneyeyim o zaman

Hatayı şimdi farkettim resim dosyasının konumunu yazmamışım kusura bakmayın. Teşekkürler ilgilendiğiniz için. Kolay gelsin :raised_back_of_hand:

Peki, kolay gelsin…