gpt4 book ai didi

python - 使用 cv2.threshold() 函数绘制轮廓

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:50 32 4
gpt4 key购买 nike

我正在测试 cv2.threshold()使用不同的值运行,但我每次都会得到意想不到的结果。所以这意味着我根本不明白 parameter 的效果:

  • 最大

有人可以解决这个问题吗?

比如我想按照白色绘制这颗星星的轮廓:

enter image description here

这是我得到的:

enter image description here

来自这段代码:

import cv2    
im=cv2.imread('image.jpg') # read picture

imgray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) # BGR to grayscale

ret,thresh=cv2.threshold(imgray,200,255,cv2.THRESH_BINARY_INV)

countours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)


cv2.drawContours(im,countours,-1,(0,255,0),3)
cv2.imshow("Contour",im)

cv2.waitKey(0)
cv2.destroyAllWindows()

每次我更改maxval 的值时,我都会得到一个我无法理解的奇怪结果。那么如何使用这个函数正确地画出这颗星星的轮廓呢?

提前谢谢你。

最佳答案

您可能想尝试一张非常简单的图像,让您清楚地了解各种参数。下面所附图片的有趣之处在于,图片中显示的数字的灰度值等于该数字。例如。 200 是用灰度值 200 编写的。这是您可以使用的示例 python 代码。

import cv2

# Read image
src = cv2.imread("threshold.png", cv2.CV_LOAD_IMAGE_GRAYSCALE)

# Set threshold and maxValue
thresh = 127
maxValue = 255

# Basic threshold example
th, dst = cv2.threshold(src, thresh, maxValue, cv2.THRESH_BINARY);

# Find Contours
countours,hierarchy=cv2.findContours(dst,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# Draw Contour
cv2.drawContours(dst,countours,-1,(255,255,255),3)

cv2.imshow("Contour",dst)
cv2.waitKey(0)

我从 OpenCV Threshold Tutorial 中复制了以下图片我最近写的。它通过示例图像、Python 和 C++ 代码解释了各种参数。希望这可以帮助。

输入图片

OpenCV Threshold Test Image

结果图片 enter image description here

关于python - 使用 cv2.threshold() 函数绘制轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28747685/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com