opencv拉普拉斯函数不像文档那样有效

时间:2018-01-05 07:01:22

标签: opencv

这是我的代码

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)

我想要文档中的结果,但它不是。

这是文档的链接:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_gradients/py_gradients.html#gradients

enter image description here

1 个答案:

答案 0 :(得分:1)

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(laplacian)
cv2.imshow('sud',laplacian8)

这给了我结果:

Result

检查this链接以了解有关该问题的更多信息。