我正在尝试按照教程将分水岭算法应用于图像:OpenCv WaterShed Docs。我之前在灰度图像上应用了高斯滤波和形态变换后的 Otsu 阈值处理,以根据代码提高图像质量:
img = cv2.imread('Results\Feb_16-0.jpg',0)
kernel = np.ones((1,1),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
blur = cv2.GaussianBlur(opening,(1,1),0)
ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
根据代码应用距离变换作为分水岭算法的第一阶段:
# sure background area
sure_bg = cv2.dilate(opening,kernel,iterations=1)
# Finding sure foreground area
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,3)
创建错误:
error: (-215) src.type() == CV_8UC3 && dst.type() == CV_32SC1 in function cv::watershed
其中正在尝试将 8 位 3 通道图像转换为 32 位单通道图像。我如何防止这种情况,但又可以使用距离变换?