Ich arbeite in einem Android-Projekt mit OpenCV und benutze eine Oberfläche, um meine eigene Kamera zu implementieren, weil ich dem Benutzer Feedback geben möchte über das Bild, das sie machen, um ihnen zu helfen, die Qualität zu verbessern. Was ich versuche, ist zu erkennen, wie dunkel das Bild ist, das sie nehmen werden, und ihnen vorzuschlagen, den Blitz zu verwenden. Danke im Voraus.Wissen, ob ein Bild zu dunkel ist, dass es mit OpenCv Flash benötigt
Antwort
Wenn Sie die Parameter der Kamera kontrollieren, sollten Sie vor der Verwendung des Blitzes Einstellungen daran vornehmen. Wenn Sie einen x2 Faktor auf die globale Exposition möchten, können Sie entweder:
- mehrfach Belichtungszeit von
- divide Blendenwert (oder f-Zahl) durch sqrt (2)
- multiplizieren gewinnen von
Jetzt (dies wird etwas Rauschen hinzufügen), um die Frage zu beantworten, wenn Sie bereits wissen, wie Pixel mit OpenCV
in Ihrem Bild zu gelangen, ich Sie es zuerst empfehlen konvertieren mit cvtColor
in Graustufen, Dann können Sie (für jedes Bild) die Summe der Pixelintensitäten berechnen (cv::sum
) und einen Schwellenwert definieren, unter dem das Bild "zu dunkel" ist.
Exemple von Pseudo-Code (dies verfeinert werden soll nach Ihren Bedürfnissen/Anwendung):
while sum(pixels) < threshold
it_nb=0
exp_time += 0.1 (second)
if it_nb>fixed_limit or if (exp_time/gain cannot be increased anymore)
print 'use flash'
break
Bitte beachten Sie, dass eine Erhöhung der Belichtungszeit auch das Rauschen erhöht. Ich habe einen Fehler in Ihrer Antwort behoben. Die f-Zahl muss verringert werden, um mehr Licht zu bekommen! – Piglet
- 1. Erkennen, ob Flash Netzwerk benötigt
- 2. Ist es möglich zu wissen, ob der Typ der hochgeladenen Datei ein Bild ist?
- 3. Gibt es eine Möglichkeit zu wissen, ob ein Status aktiv ist, ohne dass ContextNotActiveException abgefangen wird?
- 4. vtkResliceImageViewer Anzeige falsch (zu dunkel) dicom Bild
- 5. Wissen, ob ein Dienst installiert ist
- 6. Embed ein OpenCV Bild
- 7. wie zu wissen, ob das Repository ein Submodul ist
- 8. MQTT wissen, ob ein Kunde
- 9. OpenCV: Mit einem Trimap-Bild
- 10. OpenCV zu erkennen Bild mit Python
- 11. Wählen Sie ein Bild und wissen, welches Bild ausgewählt ist
- 12. Wie Sie wissen, dass ein Gerät mit Chromecast verbunden ist
- 13. Gibt es eine Möglichkeit zu wissen, ob Benutzer Mail öffnen?
- 14. Wissen, ob ein Prozess ein Elternteil oder ein Kind ist
- 15. Mit requirjs ist es möglich, zu überprüfen, ob ein Modul definiert ist, ohne es zu laden?
- 16. Ist es möglich, dass ein Bild mehrere Tags hat?
- 17. ist es möglich zu erkennen, ob ein Flash-Film auch Sound enthält?
- 18. Ist es praktisch, Code von Flash zu C# zu portieren?
- 19. Bild Dunkel/Light Detection-Client-seitig Script
- 20. Wie zu wissen, ob ein Kontrollkästchen in Selen mit Java
- 21. Ist es möglich, ein Bild mit HTML zu rendern?
- 22. Capture ein Web in Bild mit OpenCV
- 23. wie wissen, ob ein Listenindex
- 24. Überprüfen Sie, ob ein Bild tatsächlich ein Bild ist. Php
- 25. Ist es möglich, Flash-Pseudo-Streaming mit S3 zu tun?
- 26. Gibt es eine Möglichkeit, ein Bild so zu verzerren, dass es wie ein Welleneffekt aussieht?
- 27. q.js: Ist es möglich zu wissen, ob ein Versprechen aufgelöst wurde/abgelehnt wurde oder nicht
- 28. Java: Gibt es eine Möglichkeit zu wissen, ob ein InputStream eine Readonly-Datei ist
- 29. Bestimmen Sie, ob ein Bild in einem größeren Bild existiert, und wenn es so ist, finden Sie es mit Python
- 30. C++ - Wissen, ob ein Typ/Klasse verschachtelt ist?
Histogramme sind ein sehr nettes Tool Bildhelligkeit und Kontrast zu beurteilen. lies etwas über sie und wie man sie interpretiert. Abgesehen davon sollte es online genügend Ressourcen geben. einfach Google Auto Belichtungsalgorithmus, z.B. Sie finden viele Artikel darüber, was in Digitalkameras passiert. Ich bin sicher, dass es auch etwas Nützliches über Flash geben wird. – Piglet