Using cv2.imread: "<built-in function imread> returned NULL without setting an error", as if it can't open the picture or get the data
Asked Answered
W

2

10

This is the part of my code that gives the problem. It is supposed to count the amount of green pixels in a picture:

img = Image.open('path.tif')

BLACK_MIN = np.array([0, 20, 20], np.uint8)

BLACK_MAX = np.array([120, 255, 255], np.uint8)

imgg = cv2.imread(img, 1)

dst = cv2.inRange(imgg, BLACK_MIN, BLACK_MAX)

no_black = cv2.countNonZero(dst)

print('The number of black pixels is: ' + str(no_black))
Waitabit answered 26/9, 2019 at 19:56 Comment(0)
S
7

You are passing a PIL image to imread but it expects a filepath (https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#Mat%20imread(const%20string&%20filename,%20int%20flags)

You should use:

imgg = cv2.imread('path.tif', 1)
Seidel answered 26/9, 2019 at 20:1 Comment(1)
This happens if you pass pathlib.Path. Need to convert Path to str.Zinck
R
-1

Image is already readed using PIL.Now the img is in array format so you cannot able to read it again.Read your file in any one kind of format either pil or cv2

BLACK_MIN = np.array([0, 20, 20], np.uint8)

BLACK_MAX = np.array([120, 255, 255], np.uint8)

imgg = cv2.imread('path.tif', 1)

dst = cv2.inRange(imgg, BLACK_MIN, BLACK_MAX)

no_black = cv2.countNonZero(dst)

print('The number of black pixels is: ' + str(no_black))
Rendering answered 19/11, 2020 at 7:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.