无法在 GPU 上应用大津阈值,opencv 会抛出以下错误:errorthreshold.cu:105: error: (-215:Assertion failed) type <= 4 in function 'threshold'

问题描述 投票:0回答:1

我正在尝试在 GPU 中完成所有图像处理,而不是 CPU 处理:

# coding=utf8
import cv2

# Leer la imagen en la GPU
image = cv2.cuda_GpuMat()
image.upload(cv2.imread("sutil.jpeg"))
original = image


# Convertir la imagen de BGR a HSV en la GPU
image = cv2.cuda.cvtColor(image, cv2.COLOR_BGR2HSV)

# Convertir la imagen a escala de grises en la GPU
image = cv2.cuda.cvtColor(image, cv2.COLOR_BGR2GRAY)


# Binarizar la imagen en escala de grises con el método de Otsu en la GPU
ret, otsu = cv2.cuda.threshold(image,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# Aplicar una máscara binaria a la imagen original del limón en la GPU
result = cv2.cuda.bitwise_and(original, original, mask=otsu)

# Mostrar la imagen resultante segmentada
cv2.imshow('Imágen Resultante Segmentada',image)
cv2.waitKey(0)

但是应用 HSV 转换后,下一步是应用 Otsu 阈值,并且抛出此错误:

Traceback (most recent call last):
  File "gpu.py", line 18, in <module>
    ret, otsu = cv2.cuda.threshold(image,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.error: OpenCV(4.5.4) /home/orin/opencv_contrib/modules/cudaarithm/src/cuda/threshold.cu:105: error: (-215:Assertion failed) type <= 4 in function 'threshold'

“键入”是什么意思? <= 4 in function 'threshold'" I don't know why this happens, my code on cpu works perfectly:

import cv2 image = cv2.imread("sutil.jpeg") original = image image = cv2.blur(image,(31,31),0) # Convert BGR a HSV para saturar la imágen. image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) #convertir a escala de grises (CV_RGB2GRAY) image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #Binarizar la imagen en escala de grises con el método de Otsu. ret, otsu = cv2.threshold(image,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) #Aplicar mascara binaria a la imagen original del limón. result = cv2.bitwise_and(original, original, mask=otsu) cv2.imshow('Imagen Resultante Segmentada', result) cv2.waitKey(0)
我的 GPU 代码版本中的另一个细节是我删除了“cv2.blur(image,(31,31),0)”,因为我做不到,如果你们有想法解决这两个问题,我将不胜感激它。

非常感谢。

python opencv cuda
1个回答
0
投票

文档指出:

不支持

THRESH_OTSU

THRESH_TRIANGLE
 阈值类型。

© www.soinside.com 2019 - 2024. All rights reserved.