윈도우 화면 캡처 라이브러리인 dxcam과 GUI 라이브러리인 pyside6를 사용한 윈도우 화면 캡처 예제입니다.
파일은 2개로 구성되어있으며, 같은 경로에 위치해야 합니다.
app.py
import sys
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QTimer
from PySide6.QtGui import QPixmap
import dxcam
import qimage2ndarray # type: ignore
import cv2
class MainWindow:
def __init__(self, window):
self.window = window
self.camera = dxcam.create(output_color="RGB")
self.camera.start(target_fps=5)
self.timer = QTimer()
self.timer.setInterval(200)
self.timer.timeout.connect(self.display_video_stream)
self.timer.start()
def show(self):
self.window.show()
def display_video_stream(self):
frame = self.camera.get_latest_frame()
frame = cv2.resize(frame, dsize=(960,540), interpolation=cv2.INTER_AREA)
image = qimage2ndarray.array2qimage(frame)
self.window.label.setPixmap(QPixmap.fromImage(image))
if __name__ == "__main__":
loader = QUiLoader()
app = QApplication(sys.argv)
window = loader.load("app.ui", None)
main_window = MainWindow(window)
main_window.show()
sys.exit(app.exec())
app.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>970</width>
<height>570</height>
</rect>
</property>
<property name="windowTitle">
<string>Mandloh</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>5</x>
<y>5</y>
<width>960</width>
<height>540</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
실행 결과
위 사진과 같이 윈도우 화면을 캡처하고 크기를 줄여 화면에 보여줍니다.
참고
실행 후 검은화면만 나온다면 시스템 > 디스플레이 > 배율이 100%로 되어 있는지 확인해보세요.
저의 경우는 100% 이외로 설정하면 검은화면만 나왔습니다.
[끝].
728x90
'소프트웨어 > 파이썬' 카테고리의 다른 글
[파이썬] 파이썬 키보드/마우스 입력 서버 (0) | 2024.06.17 |
---|---|
[파이썬] 윈도우 화면 캡처 웹 스트리밍(with flask, dxcam, opencv) (0) | 2024.05.22 |
[파이썬] 공인 IP주소 확인하기 (0) | 2023.10.29 |
[파이썬] 텔레그램 메시지와 사진 보내기 (0) | 2023.10.21 |
[파이썬] 텔레그램 chat id 확인하기 (0) | 2023.10.20 |
댓글