Почему openCV cv2.LUT () выбрасывает утверждение, если исходное изображение и LUT кажутся совместимыми? - PullRequest
0 голосов
/ 08 февраля 2019

У меня возникают некоторые проблемы с возможностью применения LUT к изображениям с использованием openCV (4.0.0) в python 3.6.5

Начиная с LUT (таблица поиска) из 256 элементов, как указано вдокументация и попытка применить его к «однострочному исходному изображению» (поскольку более сложные изображения также вызывали у меня проблемы) всегда выдают ошибку утверждения о том, что каналы не совместимы, не являются непрерывными или неправильнымитип данных (8 бит).

Но все кажется правильным при печати информации о векторах, размерах и каналах, типе данных, и я предполагаю (но я не знаю, как проверить в python) непрерывность, чтобы быть в порядкетоже.

Есть идеи, почему я не могу применить LUT?

Я создал пользовательскую функцию для печати информации о массивах print_2Darray_Info (), чтобы проверить форму, тип данных, среднееи максимальные / минимальные значения.

_______ КОД _________

customColorPalette = numpy.asarray([(255,255,255), ... , ( 255,150,0)],dtype=numpy.uint8)

testIMG = numpy.asarray([(1,1,1), ... ,( 255,255,0)],dtype=numpy.uint8)

print_2Darray_Info(customColorPalette,"customColorPalette")

print_2Darray_Info(test001,"test001")

cv2.LUT(arr8C3,customColorPalette)

_______ ВЫХОД _________

Array info for 'customColorPalette' ==> shape:  (256, 3)  Mean:  186.94661458333334  datatype:  <class 'numpy.uint8'>  Max and Min:  255 0
Array info for 'test001' ==> shape:  (256, 3)  Mean:  183.97005208333334  datatype:  <class 'numpy.uint8'>  Max and Min:  255 0
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-192-aff71f46c372> in <module>
     11 print_2Darray_Info(customColorPalette,"customColorPalette")
     12 print_2Darray_Info(test001,"test001")
---> 13 cv2.LUT(testIMG,customColorPalette)

error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\lut.cpp:368: error: (-215:Assertion failed) (lutcn == cn || lutcn == 1) && _lut.total() == 256 && _lut.isContinuous() && (depth == CV_8U || depth == CV_8S) in function 'cv::LUT'

Я пытался применить LUT to изображения с этими формами и получают ту же ошибку: shape: (120, 160, 3) shape: (120, 160) shape: (120, 3) shape: (256, 3)

Я ожидалподтверждение успеха и применение LUT к образу src.

...