(-215:断言失败)在函数'cv::cvtColor'中的_src.empty()!与cv :: imread

17

我正在尝试从图像中识别文本,然后输出文本;然而,出现了以下错误:

Traceback (most recent call last): File "C:/Users/Benji's Beast/AppData/Local/Programs/Python/Python37-32/imageDet.py", line 41, in print(get_string(src_path + "cont.jpg") ) File "C:/Users/Benji's Beast/AppData/Local/Programs/Python/Python37-32/imageDet.py", line 15, in get_string img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

图像分辨率为1371x51。 我尝试将src_path上的“/”更改为“\”,但没有起作用。 有什么想法吗?

这是我的代码:

import cv2
import numpy as np
import pytesseract
from PIL import Image
from pytesseract import image_to_string

# Path of working folder on Disk
src_path = "C:/Users/Benji's Beast/Desktop/image.PNG"

def get_string(img_path):
    # Read image with opencv
    img = cv2.imread(img_path)

    # Convert to gray
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Apply dilation and erosion to remove some noise
    kernel = np.ones((1, 1), np.uint8)
    img = cv2.dilate(img, kernel, iterations=1)
    img = cv2.erode(img, kernel, iterations=1)

    # Write image after removed noise
    cv2.imwrite(src_path + "removed_noise.png", img)

    #  Apply threshold to get image with only black and white
    #img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2)

    # Write the image after apply opencv to do some ...
    cv2.imwrite(src_path + "thres.png", img)

    # Recognize text with tesseract for python
    result = pytesseract.image_to_string(Image.open(src_path + "thres.png"))

    # Remove template file
    #os.remove(temp)

    return result


print('--- Start recognize text from image ---')
print(get_string(src_path + "cont.jpg") )

print("------ Done -------")

我不知道如何修复这个问题,谢谢。


1
你的绝对路径中有空格。尝试将此图像复制到与您的代码相同的目录中并删除绝对部分。 - Saransh Kejriwal
12个回答

-1
new_img = 'Correct_path/Sample.png'

请检查图片路径。当以错误的图像位置加载图像时,通常会发生此错误。
尝试分配不同的路径。
尝试给出完整路径。

也许还可以参考什么是当前工作目录? - tripleee

-4

替换您的此子代码:

    # Read image with opencv
    img = cv2.imread(img_path)

使用以下代码为 ret 添加 if 条件:

    # Read image with opencv
    ret,img = cv2.imread(img_path)
    if ret == True:
        <your code>

4
答案完全错误。imread函数不会返回元组。 - Christoph Rackwitz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接