CL_INVALID_WORK_GROUP_SIZE в cv2.GaussianBlur () - PullRequest
0 голосов
/ 08 апреля 2020

Я использовал OpenCV v4.0.1. Ниже приведен тест python код

import cv2
img = cv2.UMat(cv2.imread("image.jpg", cv2.IMREAD_COLOR))
imgUMat = cv2.UMat(img)
gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (7, 7), 1.5)
gray = cv2.Canny(gray, 0, 50)

cv2.imwrite('test.jpg',img)
cv2.imwrite('test_UMat.jpg' , imgUMat)

Он вернул сообщение об ошибке, как показано ниже

[ WARN:0] Using world accessible cache directory. This may be not secure: /var/tmp/
OpenCL error CL_INVALID_WORK_GROUP_SIZE (-54) during call: clEnqueueNDRangeKernel('row_filter_C1_D0', dims=2, globalsize=128x528x1, localsize=16x16x1) sync=false
[     1]     25: FMA_MUL         temp(322).dp.x, 2.000000, temp(319).dp.x

Я проверил свой OpenCL

root@imx6qsabresd:/usr/opencv_test# opencv_version --opencl
4.0.1
OpenCL Platforms:
    Vivante OpenCL Platform
        iGPU: Vivante OpenCL Device GC2000.5108.0000 (OpenCL 1.1 )
Current OpenCL device:
    Type = iGPU
    Name = Vivante OpenCL Device GC2000.5108.0000
    Version = OpenCL 1.1
    Driver version = OpenCL 1.1 V6.2.4.p1.150331
    Address bits = 32
    Compute units = 4
    Max work group size = 1024
    Local memory size = 1 KB
    Max memory allocation size = 32 MB
    Double support = No
    Host unified memory = Yes
    Device extensions:
        cl_khr_byte_addressable_store
        cl_khr_gl_sharing
    Has AMD Blas = No
    Has AMD Fft = No
    Preferred vector width char = 4
    Preferred vector width short = 4
    Preferred vector width int = 4
    Preferred vector width long = 0
    Preferred vector width float = 4
    Preferred vector width double = 0

"localsize = 16x16x1 "меньше, чем" Максимальный размер рабочей группы = 1024 "

" globalsize = 128x528x1 "равномерно делится на" localsize = 16x16x1 "

Я не знаю, почему он вернул ошибка "CL_INVALID_WORK_GROUP_SIZE". Поэтому я проверял код построчно и обнаружил ошибку, вызванную cv2.GaussianBlur (). Кстати, если я не использую UMat, cv2.GaussianBlur () не вызовет никакой ошибки.

Может кто-нибудь сказать мне причину и как я могу исправить ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...