Я пишу видеомагнитофон с tkinter и cv2. Как передать необработанные данные tkimage в cv2.VideoWriter, cv2.circle и т. д.?
Текущий подход
Я использую массив numpy (
Код: Выделить всё
self.dataКод: Выделить всё
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)
Код: Выделить всё
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 = ImageTk.PhotoImage(image=Image.fromarray(self.data))
id, image = self.bitmap.image
self.canvas.itemconfig(id, image=image)
Подробнее здесь: https://stackoverflow.com/questions/788 ... -functions