我搜索过但搜索过但找不到:
当我使用cv.InRanges
时,我需要放置最小和最大HSV值。在我到目前为止看到的所有示例中,他们在常量上使用Cv.Scalar
我自己尝试使用它但无法确定应该在哪里我尝试了一个列表,一个元组和numpy.array都有三个值而且我一直在收到错误。
对于列表,“需要浮动”
“元组需要浮动”
“numpy.array
只能将长度为-1的数组转换为python标量”虽然想到它数组和列表应该是相同的....
任何人都可以告诉我如何正确使用它,这是许多尝试之一的样本:
def thresh(img, pixel):
hsv_min = pixel
hsv_min[0] = hsv_min[0] - 5
hsv_min[1] = hsv_min[1] - 20
hsv_min[2] = hsv_min[2] - 20
hsv_max[0] = hsv_max[0] + 5
hsv_max[1] = 255
hsv_max[2] = 255
cv.InRangeS(ingHSV, cv.Scalar(hsv_min), cv,Scalar(hsv_max), imgThreshold)
答案 0 :(得分:1)
也许这段代码可以帮助你,但它使用numpy& opencv2,我从未尝试过使用opencv。
import cv2
import numpy
def thresh(img, pixel):
hsv_min = pixel
low_threshold = numpy.array(( hsv_min[0] - 5, hsv_min[1] - 20, hsv_min[2] - 20), dtype=numpy.uint8, ndmin=1)
high_threshold = numpy.array(( hsv_max[0] + 5, 255, 255), dtype=numpy.uint8, ndmin=1)
cv2.InRange(ingHSV, low_threshold, high_threshold, imgThreshold)
答案 1 :(得分:1)
所以我想通了: 使用:
cv.Scalar(float(hsv_min[0]),float(hsv_min[1]),float(hsv_min[2]))
然后Cv.InRangeS工作正常。