- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用距离变换来绘制轮廓,但出现错误:
out = cv2.distanceTransform(mask, distanceType=cv2.DIST_L2, maskSize=5)
cv2.error: OpenCV(3.4.9) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/distransform.cpp:724: error: (-215:Assertion failed) src.type() == CV_8UC1 in function 'distanceTransform'
import cv2
import imutils
pathToThePhoto = 'labrador.jpg'
img = cv2.imread(pathToThePhoto)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 100 , 255, cv2.THRESH_BINARY)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
mask = cv2.drawContours(gray, [c], -1, (0, 255, 255), 2) #Edit: Changed from img to gray
out = cv2.distanceTransform(mask, distanceType=cv2.DIST_L2, maskSize=5)
cv2.imshow("distance-transform", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
最佳答案
问题是cv2.distanceTransform
的输出类型为np.float32
。
在显示out
之前,您需要标准化 out
到[0,1]范围。
参见OpenCV documentation:
Normalize the distance image for range = {0.0, 1.0}
so we can visualize and threshold it
cv.normalize(dist, dist, 0, 1.0, cv.NORM_MINMAX)
cv.imshow('Distance Transform Image', dist)
import cv2
import imutils
pathToThePhoto = 'labrador.jpg'
img = cv2.imread(pathToThePhoto)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 100 , 255, cv2.THRESH_BINARY)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
mask = cv2.drawContours(gray, [c], -1, 255, 2) #Edit: Changed from img to gray
out = cv2.distanceTransform(mask, distanceType=cv2.DIST_L2, maskSize=5)
# Normalize the distance image for range = {0.0, 1.0}
# so we can visualize and threshold it
out = cv2.normalize(out, out, 0, 1.0, cv2.NORM_MINMAX)
cv2.imshow("distance-transform", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
out
:
mask
:
关于python - 函数 'distanceTransform'中的错误-使用OpenCV(3.4.9)的Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61204462/
我正在尝试使用 OpenCV 分水岭算法 ( https://docs.opencv.org/3.1.0/d3/db4/tutorial_py_watershed.html ),但稍作改动。文档中有这
我的代码非常简单——我对图像进行阈值处理,然后尝试对其应用 DistanceTransform: var source = new Mat(path, ImreadModes.AnyDepth | I
我无法在 ubuntu 上使用 OpenCV (2.3) 成功计算距离变换。输出要么是黑色,要么是原始图像的副本,但绝不是预期的带有渐变的灰度图像。 我的代码: Mat input(Size(100,
我正在尝试使用 cv::distanceTransform() 函数,但在运行时出现以下错误: OpenCV Error: Unsupported format or combination of f
我正在尝试在 XCode 4.6.2 中开发的 C++ 程序中使用 OpenCV 计算一些距离变换。到目前为止,我能够成功计算 OpenCV 附带的所有距离类型,但我看到可以使用 CV_DIST_US
cv2.imshow 发生了一些奇怪的事情。我正在编写一段代码,想知道为什么我的一个操作不起作用(通过观察 cv2.imshow 诊断)。恼怒的是,我最终将完全相同的图像写入了一个看起来不错的文件。为
我是一名优秀的程序员,十分优秀!