[Solved] (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’

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/”, line 41, in
print(get_string(src_path + “cont.jpg”) )
File “C:/Users/Benji’s Beast/AppData/Local/Programs/Python/Python37-32/”, line 15, in get_string
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(3.4.4) C:projectsopencv-pythonopencvmodulesimgprocsrccolor.cpp:181: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’

The image resolution is 1371×51.
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( + "thres.png"))

    # Remove template file

    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,

Enquirer: Benji


Solution #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

Respondent: rahul4data

Solution #2:

This error occurs when the image is in one format and in the python program you specify other format.


File Path= /home/user/image.jpg

but in the python program you read the image as jpeg

img = cv.imread("image.jpeg")

Then you will be facing this error

Respondent: Narmada Murali

Solution #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:UsersBenji's BeastDesktop"


print(get_string(src_path + "cont.jpg") )
Respondent: gameon67

Solution #4:

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.

Respondent: Ishara Madhawa

Solution #5:

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.

Respondent: Isaac Patole

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy