<> Problem description

When using watershed segmentation , This common error was found
kernel = np.ones((3, 3), np.uint8) sure_bg = cv.dilate(waterimg, kernel,
iterations=3)# Setting the context dist = cv.distanceTransform(waterimg, cv.DIST_L2, 3)# range conversion
ret, sure_fg = cv.threshold(dist, dist.max()*0.6, 255, 0)# Identify the future surface_fg =
np.uint8(sure_fg) unknown = cv.subtract(sure_bg, surface_fg) ret, markers =
cv.connectedComponents(surface_fg) # markers = np.uint8(markers) markers =
markers + 1 markers[unknown == 255] = 0 waterimg[markers == -1] = 255 markers =
cv.watershed(gray, markers)
Wrong name :
cv2.error: OpenCV(4.1.0)
C:\projects\opencv-python\opencv\modules\imgproc\src\segmentation.cpp:161:
error: (-215:Assertion failed) src.type() == CV_8UC3 && dst.type() == CV_32SC1
in function 'cv::watershed'
This means that the function is trying to set the 8 Channel conversion 32 passageway

<> resolvent
markers = cv.watershed(img, markers)
In this function img Must be three channels , That is, it cannot be a grayscale image or a binary image , It can be used cvtcolor take gray2bgr, So you don't go wrong .

Technology