[英]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
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))
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 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%20 标志)
You should use:你应该使用:
imgg = cv2.imread('path.tif', 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图像已使用 PIL 读取。现在 img 为数组格式,因此您无法再次读取它。以 pil 或 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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.