Page 1 of 1

Verfälschte Bilder danach mit openCV nach stundenlanger Verwendung

Posted: 20 Feb 2025, 12:06
by Guest
Ich benutze ein Dinolite -Mikroskop, um Teile zu steuern. Aber nach stundenlangem Gebrauch wird das Bild beschädigt. Ich verwende Pyside6 mit offenem Lebenslauf
Sie finden das Bild und meinen Code hier. Die Bilder sind in Farbe, aber für den Versuch korrigiere ich die Helligkeit nicht. JPG " /> < /p>
[img]0, parent=None):
self.src = src
self.isRunning = True
self.camera = None
self.round = 1
self.datas = [0,0,0,0,0,0,0,0,0]

def run(self) :
self.camera = cv2.VideoCapture(int(self.src), cv2.CAP_DSHOW)
while self.isRunning:
ret, frame = self.camera.read()
if ret :
rgbImage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
h, w, ch = rgbImage.shape
bytesPerLine = ch * w
convertToQtFormat = QImage(rgbImage.data, w, h, bytesPerLine, QImage.Format_RGB888)
p = convertToQtFormat.scaled(640, 480, Qt.KeepAspectRatio)

if self.round == 1 :
self.datas[0] = self.camera.get(cv2.CAP_PROP_FRAME_HEIGHT)
self.datas[1] = self.camera.get(cv2.CAP_PROP_FRAME_WIDTH)
self.datas[2] = self.camera.get(cv2.CAP_PROP_EXPOSURE)
self.datas[3] = self.camera.get(cv2.CAP_PROP_BRIGHTNESS)
self.datas[4] = self.camera.get(cv2.CAP_PROP_CONTRAST)
self.datas[5] = self.camera.get(cv2.CAP_PROP_SATURATION)
self.datas[6] = self.camera.get(cv2.CAP_PROP_HUE)
self.datas[7] = self.camera.get(cv2.CAP_PROP_GAIN)
self.datas[8] = self.camera.get(cv2.CAP_PROP_SHARPNESS)

self.round+=1

self.image.emit([p, self.datas, frame])

def stop(self):
self.isRunning=False

def close(self) :
self.stop()
self.quit()
self.terminate()

def resolution(self, x, y) :
self.stop()
self.camera.set(cv2.CAP_PROP_FRAME_WIDTH, int(x))
self.camera.set(cv2.CAP_PROP_FRAME_HEIGHT, int(y))
self.round = 1
self.isRunning = True

#self.run()
def properties(self) :
self.stop()
self.camera.set(cv2.CAP_PROP_SETTINGS, 1)
self.isRunning = True
#self.run()

def parameters(self, datas) :
self.stop()

self.camera.get(cv2.CAP_PROP_FRAME_HEIGHT, datas[0])
self.camera.get(cv2.CAP_PROP_FRAME_WIDTH, datas[1])
self.camera.get(cv2.CAP_PROP_EXPOSURE, datas[2])
self.camera.get(cv2.CAP_PROP_BRIGHTNESS, datas[3])
self.camera.get(cv2.CAP_PROP_CONTRAST, datas[4])
self.camera.get(cv2.CAP_PROP_SATURATION, datas[5])
self.camera.get(cv2.CAP_PROP_HUE, datas[6])
self.camera.get(cv2.CAP_PROP_GAIN, datas[7])
self.camera.get(cv2.CAP_PROP_SHARPNESS, datas[8])

self.round = 1
self.isRunning = True

def read_parameters(self) :
self.datas[0] = self.camera.get(cv2.CAP_PROP_FRAME_HEIGHT)
self.datas[1] = self.camera.get(cv2.CAP_PROP_FRAME_WIDTH)
self.datas[2] = self.camera.get(cv2.CAP_PROP_EXPOSURE)
self.datas[3] = self.camera.get(cv2.CAP_PROP_BRIGHTNESS)
self.datas[4] = self.camera.get(cv2.CAP_PROP_CONTRAST)
self.datas[5] = self.camera.get(cv2.CAP_PROP_SATURATION)
self.datas[6] = self.camera.get(cv2.CAP_PROP_HUE)
self.datas[7] = self.camera.get(cv2.CAP_PROP_GAIN)
self.datas[8] = self.camera.get(cv2.CAP_PROP_SHARPNESS)
< /code>
Der Steckplatz: < /p>

Code: Select all

    @Slot(list)
def set_and_save_image_0(self, list):

if self.btn_auto.isChecked() :
self.array[0] = list[0]

# Update image
if self.widget_cams.image_test[0].isVisible() and self.btn_settings.isChecked() :
self.widget_cams.image_test[0].setPixmap(QPixmap.fromImage(list[0]))

#$Print datas
if list[1] != self.datas_before :
print(list[1])
try :
self.widget_cams.update_exposure(indice = 0)
except Exception as e :
print(str(e))

self.datas_before = list[1]
< /code>
Wenn ich ein Bild speichern möchte, mache ich < /p>
 path_select = os.path.join(basedir, 'test'+str(0)+'.jpg')
self.array[0].save(path_select)
shutil.copy(path_select, path_image)
Ich finde diesen Fehlerursprung nicht.