什么是cv.IntRanges中使用的cv.Scalar(min)和(max)

时间:2013-09-26 13:27:49

标签: python arrays list opencv

我搜索过但搜索过但找不到: 当我使用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)

2 个答案:

答案 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工作正常。

相关问题