Нет, значения параметра ключевого слова функции определяются, когда функция определена , а не когда функция выполнена.
Установите значение по умолчанию на None
и определите, что:
def perms(elements, setLength=None):
if setLength is None:
setLength = elements
Если вам нужно указать None
в качестве аргумента, используйте другое значение часового:
_sentinel = object()
def perms(elements, setLength=_sentinel):
if setLength is _sentinel:
setLength = elements
Теперь вызывающие абоненты могут установить setLength
на None
, и это не будет рассматриваться как значение по умолчанию.
Проблема в том, что вы не читаете документацию inRange : D
, которая сообщает следующее:
То есть, dst (I) устанавливается в 255 (все 1-биты), если src (I) находится в пределах указанных 1D, 2D, 3D, ... и 0. В противном случае
, и вы проверяете для 1
# cv2.inRange will create a mask (binary array) where the 1 values # are blue pixels and 0 values are any other colour out of the blue # range defined by hsv_l and hsv_h return 1 in cv2.inRange(hsv, hsv_l, hsv_h)
Итак, решение состоит в том, чтобы изменить его на:
return 255 in cv2.inRange(hsv, hsv_l, hsv_h)
Я проверил его с вашим изображением и вернул true, также с черно-белым изображением (BGR хотя) и возвращает false.
На мой взгляд, выбранные вами синие диапазоны немного далеки от фиолетовой стороны ... Вы можете использовать hsv colorpicker, подобный этому http: // colorizer .org / и выберите диапазоны, которые вам понравятся. Просто помните, что OpenCV использует H -> Hue / 2, а S и V - как проценты (0-100), и вы просто делите их на 100 (0-1.) И умножьте их на 255.
Вместо этого вы могли бы использовать np.any()
. Он вернет True
, если какой-либо один пиксель имеет значение 255.
Итак, вместо
return 1 in cv2.inRange(hsv, hsv_l, hsv_h)
,
вы можете просто добавить следующее :
return np.any(cv2.inRange(hsv, hsv_l, hsv_h))
Обновление:
Как упоминалось в комментариях @AKX, вы могли бы попробовать следующее:
return cv2.inRange(hsv, hsv_l, hsv_h).any()
np.any
, только обычная ol 'стандартная библиотека Python any()
.
– AKX
13 July 2018 в 12:17