Hi, I have been trying to set and get brightness value of webcam when i press button. I want to set brightness then read it. When i read brightness it prints 0.0 which is not the actual value. And set_brightness has no effect
Here is my full code
main.py
from PyQt5.QtWidgets import QApplication
from views import UI_Window
from models import Camera
if __name__ == '__main__':
camera = Camera(0)
app = QApplication([])
start_window = UI_Window(camera)
start_window.show()
app.exit(app.exec_())
models.py
import cv2
class Camera:
def __init__(self, cam_num):
self.cap = cv2.VideoCapture(cam_num)
self.cam_num = cam_num
def open(self, width=640, height=480, fps=30):
self.cap.set(5, fps) #set FPS
self.cap.set(3, width)
self.cap.set(4, height)
return self.cap.isOpened()
def read(self):
rval, frame = self.cap.read()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
return frame
def get_brightness(self):
return self.cap.get(cv2.CAP_PROP_BRIGHTNESS)
def set_brightness(self, value):
self.cap.set(cv2.CAP_PROP_BRIGHTNESS, value)
views.py
from PyQt5.QtCore import QThread, QTimer
from PyQt5.QtWidgets import QLabel, QWidget, QPushButton, QVBoxLayout, QApplication, QHBoxLayout, QMessageBox, QMainWindow
from PyQt5.QtGui import QPixmap, QImage
from models import Camera
class UI_Window(QWidget):
def __init__(self, cam_num):
super().__init__()
self.cam_num = cam_num
self.cam_num.open()
# Create a timer.
self.timer = QTimer()
self.timer.timeout.connect(self.nextFrameSlot)
self.timer.start(1000. / 24)
layout = QVBoxLayout()
button_layout = QHBoxLayout()
btnCamera = QPushButton("Print Brightness")
btnCamera.clicked.connect(self.print_brightness)
button_layout.addWidget(btnCamera)
layout.addLayout(button_layout)
# Add a label
self.setLayout(layout)
def nextFrameSlot(self):
frame = self.cam_num.read()
if frame is not None:
image = QImage(frame, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
self.pixmap = QPixmap.fromImage(image)
def print_brightness(self):
self.cam_num.set_brightness(0.5)
print(self.cam_num.get_brightness())