cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

Posted

技术标签:

【中文标题】cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function \'cv::cvtColor\'【英文标题】:cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' 【发布时间】:2021-07-30 02:10:09 【问题描述】:
import cv2 #for image processing
import easygui #to open the filebox
import numpy as np #to store image
import imageio #to read image stored at particular path

import sys
import matplotlib.pyplot as plt
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import *
from PIL import ImageTk, Image



top=tk.Tk()
top.geometry('400x400')
top.title('Cartoonify Your Image !')
top.configure(background='white')
label=Label(top,background='#CDCDCD', font=('calibri',20,'bold'))

def upload():
    ImagePath=easygui.fileopenbox()
    cartoonify(ImagePath)


def cartoonify(ImagePath):
    
    # read the image
    originalmage = cv2.imread(ImagePath)
    
    originalmage = cv2.cvtColor(originalmage, cv2.COLOR_BGR2RGB)
    #print(image)  # image is stored in form of numbers
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

【问题讨论】:

我不认为这个问题是由tkinter引起的。如果是这样,请删除tkinter 标签。 这能回答你的问题吗? (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' 【参考方案1】:

再次检查图片地址。当图像以任何方式未正确加载时,通常会发生这种情况。尝试直接给出地址;类似“C:\\test.jpg”

import cv2
im = cv2.imread("WRONG IMAGE ADDRESS.jpg", 1)
im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)


更新 您还可以获取脚本的当前文件夹路径并从中加载图像。 想象一下你的文件结构是这样的:

--RootProject
  |-img.jpg
  |-script.py

那么你也可以这样做:

script.py

    import cv2
    import sys
    im = cv2.imread(sys.path[0]+"/img.jpg", 1)
    im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)

【讨论】:

我在 Windows 上尝试这个时遇到了很多麻烦,无论我做什么,imread 都不能正常工作。在 Linux 上它可以完美运行,所以我认为在 Windows 上使用它的人并不多,因此存在永远无法修复的错误。【参考方案2】:

这似乎是 Windows 中的路径问题。我把它改成了这样的完整路径,它起作用了。

文件名 = "D:\Sandbox\Github\opencv-project\Resources\Photos\cats.jpg"

【讨论】:

这已经是其他答案所说的:Try giving the address directly; something like "C:\\test.jpg"【参考方案3】:

此错误是错误的图像位置。如果假设您在另一个文件夹中的图像意味着这样使用:

img=cv2.imread("../images/car.jpg",1)

【讨论】:

【参考方案4】:

如果您的图像文件路径错误,可能会发生这种情况,请添加您的工作文件夹然后使用如下:

image = cv2.imread('eye_face.jpg')
type(image)

那么你的图片类型将显示为numpy.ndarray,如果你的图片文件路径错误则类型将是NoneType

【讨论】:

【参考方案5】:

我试图从文件夹中读取图像并且遇到了同样的问题。我在其中一个文件夹中有一个非图像,这是问题所在。

【讨论】:

【参考方案6】:

尝试将图像作为路径,要注意的一件事是斜线。使用\\ 而不是\。您的路径必须类似于 D:\\file\\file1\\file2。 检查它是否工作打印type(cv2.imread(path))。如果它打印出<class 'numpy.ndarray'>,那么你就可以开始了。

【讨论】:

【参考方案7】:

我通过添加解决了同样的问题:

data = cv2.imread('path_to_your_image', as_grey =True)

然后尝试将 flags = cv2.DFT_COMPLEX_OUTPUT 添加到这一行

dft = cv2.dft(np.float32('your_image'),flags = cv2.DFT_COMPLEX_OUTPUT)

这个问题有很多解决方案。

【讨论】:

以上是关于cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'的主要内容,如果未能解决你的问题,请参考以下文章

opencv cv2.imread()报错: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:325: 错误: (-215) size.widt

成功解决cv2.error: OpenCV(4.7.0) D:aopencv-pythonopencv-pythonopencvmodulesimgcodecssrcloadsave.

cv2.error: OpenCV(4.5.5) D:aopencv-pythonopencv-pythonopencvmodulesobjdetectsrccascadedetect

cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘rectangle‘ > Overload resolution

cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘rectangle‘ > Overload resolution