반응형
1. OpenCV + UVC 동영상 재생
cap = cv2.VideoCapture(2)
if (cap.isOpened() == False):
print("Unable to read camera feed")
while True:
ret, color = cap.read()
if (color != []):
cv2.imshow('uvc', color)
image = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
cv2.waitKey(1)
ViedeoCapture : 웹캠(UVC) 카메라 Opencv 연결 클래스 (2)는 UVC 카메라 번호.
cvtColor : BGR2RGB 색반전, 자료형과 Opencv 형식이 색반전되어 있으므로 함수로 색반전.
2. OpenCV + 일반 동영상(avi, mp4 등) 재생
# test 동영상 경로.
aviPath = '1.mp4'
cap = cv2.VideoCapture(aviPath)
if (cap.isOpened() == False):
print("Unable to read camera feed")
while True:
ret, color = cap.read()
if (color != []):
cv2.imshow('mp4', color)
cv2.waitKey(1)
aviPath : 동영상 경로 ( 코드와 같은 경로에 동영상 파일 존재 )
3. OpenCV + tkinter label
from PIL import Image
from PIL import ImageTk
import tkinter as tk
import threading
import datetime
import cv2
import os
def camThread():
color = []
cap = cv2.VideoCapture(2)
panel = None
if (cap.isOpened() == False):
print("Unable to read camera feed")
while True:
ret, color = cap.read()
if (color != []):
cv2.imshow('uvc', color)
image = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)
image = ImageTk.PhotoImage(image)
if panel is None:
panel = tk.Label(image=image)
panel.image = image
panel.pack(side="left")
else:
panel.configure(image=image)
panel.image = image
cv2.waitKey(1)
if __name__ == '__main__':
thread_img = threading.Thread(target=camThread, args=())
thread_img.daemon = True
thread_img.start()
root = tk.Tk()
root.mainloop()
https://rootiel.tistory.com/31 와 같이 OpencvMat 을 imageTK 자료형으로 변경하여 tkinter panel 에 탑재.
panel 라벨에 계속해서 이미지 변경을 반영해야 하므로 image capture 반복을 thread 로 프로그램을 진행시킨다.
반응형
'프로그래밍 > PYTHON' 카테고리의 다른 글
[python]파이썬_Tkinter_엑셀형식_Entry입력(ScrollableFrame, Entry) (0) | 2020.08.01 |
---|---|
[python]파이썬_Tkinter_리스트박스 옆 스크롤바(Listbox,Scrollbar) (0) | 2020.07.31 |
[Python]파이썬_Matplotlib_Tkinter 연결 (0) | 2020.07.23 |
[Python]파이썬_OpencvMat_Tkinter 연결 (0) | 2020.07.22 |
[Python] 파이썬 프로그램 배포시 인증키(시디키,키맵)삽입 (0) | 2020.07.17 |