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

穿精又带淫゛_ 提交于 2020-04-06 08:49:15

问题


I am trying to recognize text from an image to then have the text outputted; however, this error spits out:

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'

The image resolution is 1371x51. I have tried changing the "/" on src_path to "\" but that didn't work. Any ideas?

Here is my code:

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 -------")

I have no idea how to fix this, thanks.


回答1:


This means you are passing a Uninitialized variable to

> cv2.cvtColor()

After this statement:

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

Can you try to print the img variable before passing to cv2.cvtColor() function

> print(img) or print(img.shape)

to make sure function call to read the image is successful




回答2:


I think your source path should be:

src_path = "C:/Users/Benji's Beast/Desktop/"

Because in here get_string(src_path + "cont.jpg") you've concatenated the image name.




回答3:


The problems are this one

src_path = "C:/Users/Benji's Beast/Desktop/image.PNG"

and this one

print(get_string(src_path + "cont.jpg") )

You are appending the image input file name from image.PNG to image.PNG.cont.jpg

If your input image filename is cont.jpg and it is located on your Desktop, then try to replace your code with :

src_path = "C:\Users\Benji's Beast\Desktop\"

and

print(get_string(src_path + "cont.jpg") )



回答4:


if path and image name is verified and correct then just close the jupyter notebook (or whatever platform you are using) and restart it. It worked for me.



来源:https://stackoverflow.com/questions/53926657/215assertion-failed-src-empty-in-function-cvcvtcolor

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!