Çözüldü PyCharm "215: Assertion failed" hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

bLaDe65

Kilopat
Katılım
29 Temmuz 2016
Mesajlar
48
Daha fazla  
Cinsiyet
Erkek
PyCharm'ı ve gerekli tüm bileşenlerini indirdim. Ancak kod çalıştırdığımda aşağıdaki hatayı alıyorum. Bunun sebebi olarak kodu CV2 kütüphanesinde yazılmış olması. Python kütüphanelerinde artık CV2 kaldırıldığı için OpenCV-Python'u kullanmaya başladım PC'yi formatlayınca. Yardımcı olabilecek yok mu?

Kod:
C:\Users\...\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/Ertunc/PycharmProjects/pythonProject/main.py
Traceback (most recent call last):
 File "C:\Users\...\PycharmProjects\pythonProject\main.py", line 25, in <module>
 CV2.imwrite("SS. PNG", roi)
CV2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:799: error: (-215: Assertion failed) !_img.empty() in function 'cv::imwrite'

Process finished with exit code 1

Cevabını bilen biri var mı?
Konuyu webde arattığımda benzer bir durumun olduğunu görmedim. Ayrıyetten bionluk sitesinden biriyle anlaşıp yazdırdığım ve programlama bilmediğim için çözüm üretemiyorum. Programı yapan arkadaşta vizeleri olduğu için benden biraz süre vermemi istedi yardımcı olacağınızı düşündüğüm için sizleri etiketledim. Şimdiden teşekkürler
@cenkkk @KremJanti @Anceph @SinekTV @permatik @emresudo @innsomniac @Muofer @b0reaS ☺️
 
Son düzenleme:
Çözüm
  1. Eğer Windows kullanıyorsanız Home · UB-Mannheim/tesseract Wiki adresinden, Linux kullanıyorsanız da dağıtımınızın sahip olduğu paket yöneticinizden işletim sisteminize uygun Tesseract binary'lerini indirin.
  2. Tesseract binary'lerinin indiği klasörü PATH'a ekleyin. Windows için arama kısmına Sistem ortam değişkenlerini düzenleyin yazın ve ilgili yere tıklayın. Daha sonra açılan pencerede Ortam Değişkenleri butonuna tıklayın. Sonrasında yeni açılacak pencerede hem üst kısımda hem de alt kısımda İki adet Path yazan yer olacak. Her ikisine sırayla çift tıklayın, açılacak yeni pencerede Yeni butonuna tıklayın, Tesseract'ın yüklenmiş olduğu dosya yolunu yapıştırın ve Tamam'a tıklayın. Daha sonra programı yeniden çalıştırın. Not: benim bilgisayarımda Tesseract'ın yüklendiği dosya yolu C:\Program Files\Tesseract-OCR şeklinde. Siz ne olur ne olmaz diye indirirken dosya yoluna dikkat edin. Eğer PATH'a ekleme kısmında sorun yaşadıysanız Add to the PATH on Windows 10 | Architect Ryan sitesinde ekran görüntülerini içeren güzel bir anlatım var.

Eğer bu adım sorununuzu çözmezse diye birkaç sorum daha olacak. Acaba yapmaya çalıştığınız şey sitelerdeki BTC ve benzeri kripto para değerlerini almak mıdır? Eğer öyleyse site fark eder mi veya tercih ettiğiniz başka siteler var mı? Ayrıca program çalıştığı sürede ilgili web sitesini ekranınızda açık tutuyor musunuz?
İlk mesaja sonradan ekleme yapmıştım sanırım görmediniz :) programı başka birine yaptırmıştım ama kendisi benden vize için birkaç gün istedi aciliyetim olduğu için yazayım demiştim. Bu arada roi de seçilen kısım anlamına geliyormuş kodları inceleyince ne olduğunu anladım :D

CV2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:799: error: (-215: Assertion failed) !_img.empty() in function 'cv::imwrite'

bu hataya göre D: konumu seçili ama ben bunu C: dizininde ve çalıştırdığım klasörde veya herhangi bir yerde kaydetmesini istiyorum bunu nasıl yaparım bilginiz var mı @Muofer @innsomniac
Hocam o kaydetme değil k, OpenCV'nin konumu anladığım kadarıyla.
 
Hocam o kaydetme değil k, OpenCV'nin konumu anladığım kadarıyla.
Normalde pcde D: sürücüsü yoktu, hatayla karşılaşınca E; sürücüsünü D: yaptım fakat sonuç yine aynı, bahsedilen klasörüde görmedim. opencv-pythonu tekrardan kurdum sonuç yine aynı. Bu yüzden konumu değiştirmem lazım sanırım
 
Normalde Bilgisayarda D: sürücüsü yoktu, hatayla karşılaşınca E; sürücüsünü D: yaptım fakat sonuç yine aynı, bahsedilen klasörüde görmedim. opencv-pythonu tekrardan kurdum sonuç yine aynı. Bu yüzden konumu değiştirmem lazım sanırım
İstenen konumu değiştirebiliyorsunuz diye biliyorum fakat hatırlamıyorum şimdilik. Sorununuzu çözmeniz umuduyla.😶‍🌫️
 
Açıkçası sorunun konumdan kaynaklı olduğunu sanmıyorum. Pycharm projeleri Windows'ta mevcut kullanıcı dizinine kaydolur, kata mesajındaki dosya konumuna bakarak sizinkinin de oraya kaydolduğunu söyleyebilirim. Eğer "Ertunc" kullanıcısı sizseniz herhangi bir izin problemi çıkmaz.

Problem, fotoğrafı kesmeye çalışırken çıkıyor gibi gözüküyor. İlk önce x0, x1, y0, y1 değişkenlerine bir değer atandığına emin olun. Eğer değişkenlere değer atanıyorsa o zaman sıkıntı, değişkenlerin değerlerinde demektir. Bu ne demek diye soracak olursanız şöyle izah edeyim. Örneğin siz 1080p bir monitör kullanıyorsunuz. Bu sebeple çözünürlüğünüz yatayda 1920 piksel ve dikeyde 1080 piksel olmalı. Dolayısıyla aldığınız ekran görüntüsü de 1920x1080 piksel boyutunda olacak, bu da img ve img2 değişkenlerine atanan fotoğrafları da otomatik olarak 1920x1080 boyutunda yapacak. Diyelim ki x0=5000 ve x1=6000 olsun. Bu durumda fotoğrafın boyutlarının dışında bir kesme işlemi yapmaya çalışıyor olursunuz ve de çıkacak sonuç hatalı olur. Dolayısıyla kesme boyutunu (x0, x1, y0, y1) değişkenlerini iyice bir kontrol etmenizde fayda var.

Ayrıyeten sorun hala düzelmemişse lütfen kodunuzu aşağıda bıraktığım makaleye uygun ve tüm kod paylaşılacak şekilde düzgün olarak atın.
 
25.satırdaki "roi" değişkeninde resim yok veya geçersiz olmasından kaynaklanıyor.
img = np.array(pyautogui.screenshot())

np.array => numpy.array — NumPy v1.22 Manual

Size bir array(dizi) döndürüyor.


img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

img değişkeni ise bir array, cvtColor methodunun ilk parametresi bir array olamaz sanıyorum, aşağıdaki linkte örnek kullanımı mevcut bakabilirsiniz.


Kodlarında devamında bir sorun yok sanırım, vaktim pek olmadığı için daha detaylı yardımcı olamayacağım ama kısa sürede çözeceğinizden şüphem yok :)
 
Sa burada çözüm aramayı ertelemiştim. Bu sefer hatanın nerden kaynaklandığını öğrendim. Koordinat kısmında bir hata oluşmuştu. Koordinatı düzgün girmeyince bu hatayı veriyordu.

Birkaç gündür windows 10' un tüm sürümlerini(home, pro, enterprise vb) bu hataya(Hata!) çözüm bulabilmek için yükledim. Denemelerimde güncelleştirmeleri yükleyip sonra denedim. Diğerinde güncelleştirmeleri yüklemeden denedim. Ama nafile program kendi içerisinde belirtilen hata verme şekline(Hata! yazıyor programda) göre hata veriyor.

Buradan sonuç alamayınca linux mint cinnamondada denedim. Ama ne yaparsam yapayım sonuç yine aynı. Sürekli tekrar eden Hata! yazısı var. Nerede hata yaptığımı söyleyebilir misiniz? Python dilinde yazılmış. Tradingview için almıştım.

Python:
import pyautogui,cv2,pytesseract,time
import numpy as np
from PIL import Image
f = open('ayar.txt','r')

sure = 1

counter = 0
background_counter = 0
background_value = 0
sozluk = dict()
dosya = f.readlines()
koordinatlar = dosya[0][0:len(dosya[0])].split(',')
h=int(dosya[1]);s=int(dosya[2]);v = int(dosya[3])
lower_color = np.array([h,s,v]);upper_color = np.array([180, 255, 255])
x0 = int(koordinatlar[0])
y0 = int(koordinatlar[1])
x1 = int(koordinatlar[2])
y1 = int(koordinatlar[3])
time.sleep(3)
while True:
    img = np.array(pyautogui.screenshot())
    img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    roi = img2[y0:y1,x0:x1]
    cv2.imwrite('ss.png', roi)
    roi_hsv = img[y0:y1, x0:x1]
    roi_hsv = cv2.cvtColor(roi_hsv, cv2.COLOR_RGB2HSV)
    roi_hsv = cv2.inRange(roi_hsv,lower_color,upper_color)
    cv2.imwrite('roi_hsv.png',roi_hsv)
    for x in range(roi.shape[1]):
        for y in range(roi.shape[0]):
            if roi_hsv[y,x] == 255:
                background_counter += 1
    if background_counter / (roi.shape[1]*roi.shape[0]) > 0.65:
        background_value += 1
    try:
        yazi_sonuc = pytesseract.image_to_string(Image.open('ss.png'))
        yazi_liste = yazi_sonuc.split('\n');print(yazi_liste)
        for yazi in yazi_liste:
            if yazi in sozluk:
                deger = sozluk[yazi]
                deger += 1
                sozluk[yazi] = deger
            else:
                sozluk[yazi] = 1
        counter += 1
        print(str(counter)+" Defa çalıştı")
        f2 = open('bilgi.txt','w')
        for key,value in sozluk.items():
            f2.write('%s:%s\n' % (key, value))
        f2.write("Arka Plan Sayacı:"+str(background_value))
        f2.close()
        time.sleep(sure)
    except:
        print("Hata!")

@UmutCan01 @emresudo
Vc++, net framework, flash player, java vb ne varsa yükleyip o şekilde denedim. Sonrasında programı yazan diğer kişideki pythonProjects klasörünü aldım yaptım ama hala aynı
 
Son düzenleme:
Sa burada çözüm aramayı ertelemiştim. Bu sefer hatanın nerden kaynaklandığını öğrendim. Koordinat kısmında bir hata oluşmuştu. Koordinatı düzgün girmeyince bu hatayı veriyordu.

Birkaç gündür windows 10' un tüm sürümlerini(home, pro, enterprise vb) bu hataya(Hata!) çözüm bulabilmek için yükledim. Denemelerimde güncelleştirmeleri yükleyip sonra denedim. Diğerinde güncelleştirmeleri yüklemeden denedim. Ama nafile program kendi içerisinde belirtilen hata verme şekline(Hata! yazıyor programda) göre hata veriyor.

Buradan sonuç alamayınca linux mint cinnamondada denedim. Ama ne yaparsam yapayım sonuç yine aynı. Sürekli tekrar eden Hata! yazısı var. Nerede hata yaptığımı söyleyebilir misiniz? Python dilinde yazılmış. Tradingview için almıştım.

Python:
import pyautogui,cv2,pytesseract,time
import numpy as np
from PIL import Image
f = open('ayar.txt','r')

sure = 1

counter = 0
background_counter = 0
background_value = 0
sozluk = dict()
dosya = f.readlines()
koordinatlar = dosya[0][0:len(dosya[0])].split(',')
h=int(dosya[1]);s=int(dosya[2]);v = int(dosya[3])
lower_color = np.array([h,s,v]);upper_color = np.array([180, 255, 255])
x0 = int(koordinatlar[0])
y0 = int(koordinatlar[1])
x1 = int(koordinatlar[2])
y1 = int(koordinatlar[3])
time.sleep(3)
while True:
    img = np.array(pyautogui.screenshot())
    img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    roi = img2[y0:y1,x0:x1]
    cv2.imwrite('ss.png', roi)
    roi_hsv = img[y0:y1, x0:x1]
    roi_hsv = cv2.cvtColor(roi_hsv, cv2.COLOR_RGB2HSV)
    roi_hsv = cv2.inRange(roi_hsv,lower_color,upper_color)
    cv2.imwrite('roi_hsv.png',roi_hsv)
    for x in range(roi.shape[1]):
        for y in range(roi.shape[0]):
            if roi_hsv[y,x] == 255:
                background_counter += 1
    if background_counter / (roi.shape[1]*roi.shape[0]) > 0.65:
        background_value += 1
    try:
        yazi_sonuc = pytesseract.image_to_string(Image.open('ss.png'))
        yazi_liste = yazi_sonuc.split('\n');print(yazi_liste)
        for yazi in yazi_liste:
            if yazi in sozluk:
                deger = sozluk[yazi]
                deger += 1
                sozluk[yazi] = deger
            else:
                sozluk[yazi] = 1
        counter += 1
        print(str(counter)+" Defa çalıştı")
        f2 = open('bilgi.txt','w')
        for key,value in sozluk.items():
            f2.write('%s:%s\n' % (key, value))
        f2.write("Arka Plan Sayacı:"+str(background_value))
        f2.close()
        time.sleep(sure)
    except:
        print("Hata!")

@UmutCan01 @emresudo
Vc++, net framework, flash player, java vb ne varsa yükleyip o şekilde denedim. Sonrasında programı yazan diğer kişideki pythonProjects klasörünü aldım yaptım ama hala aynı

ayar.txt adlı dosyanızı atma şansınız var mıdır acaba? Ayrıca tradingview'de bu kod sayesinde bulmak istediğiniz şey nedir? Bahsedilen tradingview https://tr.tradingview.com/ adresindeki site midir?
 
ayar.txt adlı dosyanızı atma şansınız var mıdır acaba? Ayrıca tradingview'de bu kod sayesinde bulmak istediğiniz şey nedir? Bahsedilen tradingview https://tr.tradingview.com/ adresindeki site midir?
Herhangi yeri yapabiliyorum. Ben ofis programları ve site için kullanacaktım. Ama sorun çıkarıyor. Ben genelde bu tür siteleri kullanıyorum

Ayar.txt
Kod:
311,393,530,476
0
0
0
 
  1. Eğer Windows kullanıyorsanız Home · UB-Mannheim/tesseract Wiki adresinden, Linux kullanıyorsanız da dağıtımınızın sahip olduğu paket yöneticinizden işletim sisteminize uygun Tesseract binary'lerini indirin.
  2. Tesseract binary'lerinin indiği klasörü PATH'a ekleyin. Windows için arama kısmına Sistem ortam değişkenlerini düzenleyin yazın ve ilgili yere tıklayın. Daha sonra açılan pencerede Ortam Değişkenleri butonuna tıklayın. Sonrasında yeni açılacak pencerede hem üst kısımda hem de alt kısımda İki adet Path yazan yer olacak. Her ikisine sırayla çift tıklayın, açılacak yeni pencerede Yeni butonuna tıklayın, Tesseract'ın yüklenmiş olduğu dosya yolunu yapıştırın ve Tamam'a tıklayın. Daha sonra programı yeniden çalıştırın. Not: benim bilgisayarımda Tesseract'ın yüklendiği dosya yolu C:\Program Files\Tesseract-OCR şeklinde. Siz ne olur ne olmaz diye indirirken dosya yoluna dikkat edin. Eğer PATH'a ekleme kısmında sorun yaşadıysanız Add to the PATH on Windows 10 | Architect Ryan sitesinde ekran görüntülerini içeren güzel bir anlatım var.

Eğer bu adım sorununuzu çözmezse diye birkaç sorum daha olacak. Acaba yapmaya çalıştığınız şey sitelerdeki BTC ve benzeri kripto para değerlerini almak mıdır? Eğer öyleyse site fark eder mi veya tercih ettiğiniz başka siteler var mı? Ayrıca program çalıştığı sürede ilgili web sitesini ekranınızda açık tutuyor musunuz?
 
Çözüm

Yeni konular

Geri
Yukarı