Почему не передается изображение с камеры?
нужно сделать вывод изображения с веб-камеры, но почему то не срабатывает(в окне просто белый фон), в чем дело?
from tkinter import *
import cv2
from PIL import Image, ImageTk
win = Tk()
win.geometry("700x350")
label =Label(win)
label.grid(row=0, column=0)
cap= cv2.VideoCapture(0)
def show_frames():
cv2image= cv2.cvtColor(cap.read()[1],cv2.COLOR_BGR2RGB)
img = Image.fromarray(cv2image)
imgtk = ImageTk.PhotoImage(image = img)
label.imgtk = imgtk
label.configure(image=imgtk)
label.after(20, show_frames)
show_frames()
win.mainloop()
Ответы (1 шт):
Автор решения: Александр
→ Ссылка
Попробуйте сначала с видео файлом, если работает значит камера не отдаёт фреймы.
from tkinter import Tk, Label
import cv2
from PIL import Image, ImageTk
class Application(Tk):
def __init__(self):
super().__init__()
self.size_video = 0, 0
self.__source = None
self.frame_widget = None
self.ui_elements()
def ui_elements(self):
self.frame_widget = Label(self)
self.frame_widget.grid(row=0, column=0)
def initialization_camera(self):
self.__source = cv2.VideoCapture(r'video\input_video_file.mp4')
result, frame = self.__source.read()
opencv_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
height = opencv_image.shape[0]
width = opencv_image.shape[1]
self.size_video = width, height
def show_frame(self):
result, frame = self.__source.read()
opencv_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frame = Image.fromarray(opencv_image)
photo_image = ImageTk.PhotoImage(image=frame)
self.frame_widget.image = photo_image
self.frame_widget.configure(image=photo_image)
self.frame_widget.after(20, self.show_frame)
def run(self):
self.geometry(f"{self.size_video[0]}x{self.size_video[1]}")
self.show_frame()
self.mainloop()
def main():
application = Application()
application.initialization_camera()
application.run()
if __name__ == '__main__':
main()