0

Trying to preprocess an image based on below forum: https://stackoverflow.com/a/60161328/7250310 However I am getting an error which I will list after the code snippet below. Please help

im_gray = Image.open('two.jpg')
gray_image = ImageOps.grayscale(im_gray)
gray_image.save('gray_two.jpg')
gry_image = cv2.imread('gray_two.jpg')
blur = cv2.GaussianBlur(gry_image, (3,3), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# Morph open to remove noise and invert image
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)

imagem = (255 - opening)
cv2.imwrite('inverted.jpg', imagem)

Error

thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1] cv2.error: OpenCV(4.5.2) /private/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/pip-req-build-_vtm8tqn/opencv/modules/imgproc/src/thresh.cpp:1557: error: (-2:Unspecified error) in function 'double cv::threshold(cv::InputArray, cv::OutputArray, double, double, int)'

THRESH_OTSU mode: 'src_type == CV_8UC1 || src_type == CV_16UC1' where 'src_type' is 16 (CV_8UC3)

Fazal
  • 87
  • 9
  • 2
    The type of `gry_image` is `CV_8UC3` - applies BGR image. `gry_image = cv2.imread('gray_two.jpg')` reads a BGR image, even when the saved source was Grayscale. Use `gry_image = cv2.imread(gray_two.jpg', cv2.IMREAD_GRAYSCALE)`. – Rotem May 23 '21 at 13:32
  • thanks a bunch. Thats exactly what the issue was. – Fazal May 24 '21 at 17:38

0 Answers0