webentwicklung-frage-antwort-db.com.de

OpenCV! _Src.empty () in Funktion 'cvtColor' Fehler

Ich versuche, eine grundlegende Farbkonvertierung in Python durchzuführen, aber ich scheine den unten genannten Fehler nicht zu überwinden. Ich habe Python, opencv neu installiert und sowohl Python 3.4.3 (neueste Version) als auch Python 2.7 (die auf meinem Mac installiert ist) ausprobiert.

Ich habe opencv mit pythons Paketmanager opencv-python installiert. 

Hier ist der Code, der fehlschlägt:

frame = cv2.imread('frames/frame%d.tiff' % count)
frame_HSV= cv2.cvtColor(frame,cv2.COLOR_RGB2HSV)

Dies ist die Fehlermeldung:

cv2.error: OpenCV(3.4.3) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
1
Charklewis

Dieser Fehler ist aufgetreten, weil das Image nicht ordnungsgemäß geladen wurde. Sie haben also ein Problem mit der vorherigen Zeile cv2.imread. Mein Vorschlag ist:

  • prüfen Sie, ob die Bilder in dem von Ihnen angegebenen Pfad vorhanden sind

  • Überprüfen Sie die Zählvariable, wenn er eine gültige Nummer hat 

6
shaked litbak

Ich war auch in der gleichen Situation und mein Fall war wegen des koreanischen Buchstabens auf dem Weg ...

Nachdem ich koreanische Buchstaben aus dem Ordnernamen entfernt habe, funktioniert es.

ODER setzen

[#-*- coding:utf-8 -*-]

(außer [ ] am Rand)

oder so etwas in der ersten Zeile, damit python Koreanisch oder deine Sprache oder ähnliches versteht. Dann funktioniert es auch, wenn in meinem Fall ein paar Koreaner im Pfad sind.

Die Sache ist also, dass es anscheinend etwas über den Pfad oder den Buchstaben gibt. Leute, die geantwortet haben, sagen ähnliche Dinge. Hoffe ihr löst es!

1
sdh4967

Prüfen Sie, ob es sich um die Datei jpg , png , bmp handelt, die Sie angeben, und schreiben Sie die Erweiterung entsprechend.

1
Ramandeep Singh

In meinem Fall wurde das Bild falsch benannt. Überprüfen Sie, ob das Bild vorhanden ist, und versuchen Sie es

import numpy as np
import cv2

img = cv2.imread('image.png', 0)
cv2.imshow('image', img)
0
henryoats

Diesen Fehler habe ich auch immer wieder bekommen:

Traceback (most recent call last):
  File "face_detector.py", line 6, in <module>
    gray_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor

Mein cv2.cvtColor(...) funktionierte gut mit \photo.jpg, Aber nicht mit \news.jpg. Endlich wurde mir klar, dass Sie bei der Arbeit mit Python unter Windows jedes Mal von diesen Escape-Zeichen angesprochen werden !! Daher wurde mein "schlechtes" Foto ausgeblendet, da der Dateiname mit "n" begann. Python nahm den \n Als Escape-Zeichen und OpenCV konnte die Datei nicht finden!

Lösung:
Vorwort Dateinamen in Windows python mit r"...\...\" Wie in

cv2.imread(r".\images\news.jpg")
0
D Jacobson

Ich hatte das gleiche Problem und es stellte sich heraus, dass meine Bildnamen enthielten Sonderzeichen (z. B. château.jpg), was mit cv2.imread Nicht gehandhabt werden konnte. Meine Lösung bestand darin, eine temporäre Kopie der Datei zu erstellen und diese umzubenennen, z. temp.jpg , das problemlos mit cv2.imread geladen werden konnte.

Hinweis: Ich habe die Leistung von shutil.copy2 Nicht überprüft. Es gibt also wahrscheinlich eine bessere/schnellere Lösung, um eine temporäre Kopie zu erstellen.

import shutil, sys, os, dlib, glob, cv2

for f in glob.glob(os.path.join(myfolder_path, "*.jpg")):
    shutil.copy2(f, myfolder_path + 'temp.jpg')
    img = cv2.imread(myfolder_path + 'temp.jpg')
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    os.remove(myfolder_path + 'temp.jpg')

Wenn nur wenige Dateien mit Sonderzeichen vorhanden sind, kann das Umbenennen auch ausnahmsweise erfolgen, z.

for f in glob.glob(os.path.join(myfolder_path, "*.jpg")):
    try:
        img = cv2.imread(f)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    except:
        shutil.copy2(f, myfolder_path + 'temp.jpg')
        img = cv2.imread(myfolder_path + 'temp.jpg')
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        os.remove(myfolder_path + 'temp.jpg')
0
Peter

Wenn beim Lesen eines Frames von einer Webcam dasselbe Problem auftritt:

Überprüfen Sie einfach, ob Ihre Webcam für eine andere Aufgabe verwendet wird, und schließen Sie sie. Dies wird das Problem lösen.

Ich habe einige Zeit mit diesem Fehler verbracht, als mir klar wurde, dass meine Kamera in einer Google Hangouts-Gruppe online war.

0
Leonardo Mariga