【问题标题】: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'

【问题讨论】:

标签: python tkinter opencv-python


【解决方案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)

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

          【讨论】:

            猜你喜欢
            • 2019-08-30
            • 2021-08-16
            • 2019-06-26
            • 2019-05-24
            • 1970-01-01
            • 2019-11-12
            • 2021-02-08
            • 1970-01-01
            • 2021-04-19
            相关资源
            最近更新 更多