这是我的代码
img_original=cv2.imread("sudoku-original.jpg",0)
cv2.imshow("original",img_original)
laplacian = cv2.Laplacian(img_original,cv2.CV_64F)
cv2.imshow("laplace",laplacian)
我想要像文档中那样的结果,但它没有。
laplacian = cv2.Laplacian(img_original,cv2.CV_64F)
上面的行意味着图像的格式是 CV_64F,它是一个浮点值数组。因此,当您使用 cv2.imshow() 函数时,它的工作方式如下:大于 1.0 的值将是白色像素,小于 0.0 的值将是黑色。
因此您需要将其转换为 CV_8U。有很多方法可以做到, 我一般用这个:
laplacian = cv2.Laplacian(img,cv2.CV_64F)
ret,thresh = cv2.threshold(laplacian,0,255.0,cv2.THRESH_TOZERO)
laplacian8 = np.uint8(thresh)
cv2.imshow('sud',laplacian8)
这给了我结果:
检查this链接以了解有关该问题的更多信息。
-更改 ksize 和 ddepth 参数后,生成的图像与 OpenCV python 教程中的示例相匹配:
img = cv.imread(cv.samples.findFile('sudoku.png'), cv.IMREAD_GRAYSCALE)
laplacian = cv.Laplacian(img,cv.CV_8U, ksize=3)
plt.subplot(1,2,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(1,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.show()