Как передать необработанные данные tkimage в функции cv2?Python

Программы на Python
Anonymous
Как передать необработанные данные tkimage в функции cv2?

Сообщение Anonymous »

TLDR
Я пишу видеомагнитофон с tkinter и cv2. Как передать необработанные данные tkimage в cv2.VideoWriter, cv2.circle и т. д.?
Текущий подход
Я использую массив numpy (

Код: Выделить всё

self.data
) в качестве посредника. Но таким образом мне нужно каждый раз создавать новый tkimage. Итак, создав его один раз, я хочу получить доступ к данным tkimage напрямую с помощью функций cv2. Следующий класс инкапсулирует tkimage и массив numpy:

Код: Выделить всё

import cv2
import numpy as np
// import tkinter as tk
// from tkinter import Canvas
from PIL import Image, ImageTk

class Bitmap:
def __init__(self, size=(512, 512)):
self.data = np.zeros((size[1], size[0], 3), dtype=np.uint8)
self._image_id = 0
self._image = None

@property
def size(self):
return (self.data.shape[1], self.data.shape[0])

@property
def width(self):
return self.data.shape[1]

@property
def height(self):
return self.data.shape[0]

@property
def clear(self):
self.data.fill(0)

def new_image(self):
self._image = ImageTk.PhotoImage(image=Image.fromarray(self.data))
return self._image_id, self._image

@property
def image(self):
return self._image_id, self._image

def setup(self, canvas):
self._image = ImageTk.PhotoImage(image=Image.fromarray(self.data))
self._image_id = canvas.create_image(0, 0, anchor=tk.NW, image=self._image)
Запись в self.data:

Код: Выделить всё

cv2.circle(self.bitmap.data, (x, y), 5, (255, 255, 255), 1, cv2.LINE_AA)
Запись в видеофайл:

Код: Выделить всё

// self.recorder = cv2.VideoWriter()
self.recorder.write(self.bitmap.data)
Используйте self.image для обновления пользовательского интерфейса tkinter:

Код: Выделить всё

// self._image = ImageTk.PhotoImage(image=Image.fromarray(self.data))
id, image = self.bitmap.image
self.canvas.itemconfig(id, image=image)
Итак, как писать напрямую в данные tkinter.image?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -functions

Вернуться в «Python»