8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何将 tkimage 原始数据传递给 cv2 函数?

crow16384 2月前

28 0

TLDRI 正在用 tkinter 和 cv2 编写视频录像机。如何将 tkimage 原始数据传递给 cv2.VideoWriter、cv2.circle 等?当前方法我使用 numpy 数组 (self.data) 作为中间人。...

总长DR

我正在用 tkinter 和 cv2 编写视频录制器。如何将 tkimage 原始数据传递给 cv2.VideoWriter、cv2.circle 等?

当前方法

我使用 numpy 数组 ( self.data ) 作为中间人。但这样我每次都需要创建一个新的 tkimage。因此,创建一次后,我想直接使用 cv2 函数访问 tkimage 数据。以下类封装了 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 ui:

// self._image = ImageTk.PhotoImage(image=Image.fromarray(self.data))
id, image = self.bitmap.image
self.canvas.itemconfig(id, image=image)

那么,如何直接向 tkinter.image 写入数据?

帖子版权声明 1、本帖标题:如何将 tkimage 原始数据传递给 cv2 函数?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由crow16384在本站《opencv》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: