Конвертировать текстуру kivy в изображение opencv - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь преобразовать мою текстуру kivy в формат изображения, чтобы я мог обработать ее, используя opencv (cv2). Я попытался прочитать текстуру, используя read () и cv2.imread (), но ни один из них не сработал. Я также посмотрел на преобразование текстуры ubyte в строку, но ничего не получил.

текстура камеры kivy -> формат, который я могу обработать, используя cv2

что-то вроде

MyVariable = someid.texture
#do something to format of MyVariable so that it is an 'image'
Newvar = MyVariable.read()
#cv2 processing...

РЕДАКТИРОВАТЬ:

Хорошо, поэтому я получил данные из текстуры, используя texture.pixel в формате массива RGB. Затем я использовал

newvalue = np.frombuffer(camera.texture.pixels, np.uint8) 

, чтобы получить данные в виде пустой строки. Оттуда было довольно легко повторно отобразить его на виджете изображения, используя:

finalstage = newvalue.tostring()
texture1 = Texture.create(size=variables.size, colorfmt='rgba')
texture1.blit_buffer(finalstage, colorfmt='rgba', bufferfmt='ubyte')
image.texture = texture1

Моя проблема в том, что теперь я хочу использовать Opencv для рисования прямоугольников на лицах, а затем обновить текстуру изображения. У меня есть рабочий код для рисования прямоугольников, однако сначала мне нужно преобразовать данные RGB в серый, используя

gray = cv2.cvtColor(newvalue, cv2.COLOR_RGBA2GRAY)

. Это возвращает мою новую ошибку:

11-08 17:22:51.451 25259 25582 E cv::error(): OpenCV(4.0.1) Error: Unspecified error (> Invalid number of channels in input image:
11-08 17:22:51.451 25259 25582 E cv::error(): >     'VScn::contains(scn)'
11-08 17:22:51.451 25259 25582 E cv::error(): > where
11-08 17:22:51.451 25259 25582 E cv::error(): >     'scn' is 1
11-08 17:22:51.451 25259 25582 E cv::error(): ) in cv::CvtHelper<cv::Set<3, 4, -1>, cv::Set<1, -1, -1>, cv::Set<0, 2, 5>, cv::SizePolicy::NONE>::CvtHelper(cv::InputArray, cv::OutputArray, int) [VScn = cv::Set<3, 4, -1>, VDcn = cv::Set<1, -1, -1>, VDepth = cv::Set<0, 2, 5>, sizePolicy = cv::SizePolicy::NONE], file /home/.../color.hpp, line 259

Если я что-то пропустилдай мне знать

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