Camera: make it webcam-agnostic

This commit is contained in:
Thomas Farstrike
2026-02-10 20:09:27 +01:00
parent 38af82a1e2
commit 1ad6656e2d
2 changed files with 8 additions and 40 deletions
@@ -1,11 +1,6 @@
import lvgl as lv
import time
try:
import webcam
except Exception as e:
print(f"Info: could not import webcam module: {e}")
from ..time import epoch_seconds
from .camera_settings import CameraSettingsActivity
from ..camera_manager import CameraManager
@@ -34,7 +29,6 @@ class CameraActivity(Activity):
image_dsc = None
scanqr_mode = False
scanqr_intent = False
use_webcam = False
capture_timer = None
prefs = None # regular prefs
@@ -321,7 +315,7 @@ class CameraActivity(Activity):
def open_settings(self):
from ..content.intent import Intent
intent = Intent(activity_class=CameraSettingsActivity, extras={"prefs": self.prefs if not self.scanqr_mode else self.scanqr_prefs, "use_webcam": self.use_webcam, "scanqr_mode": self.scanqr_mode})
intent = Intent(activity_class=CameraSettingsActivity, extras={"prefs": self.prefs if not self.scanqr_mode else self.scanqr_prefs, "scanqr_mode": self.scanqr_mode})
self.startActivity(intent)
def try_capture(self, event):
@@ -363,25 +357,3 @@ class CameraActivity(Activity):
return buffer[3:]
return buffer
"""
def zoom_button_click_unused(self, e):
print("zooming...")
if self.use_webcam:
print("zoom_button_click is not supported for webcam")
return
if self.cam:
startX = self.prefs.get_int("startX", CameraSettingsActivity.startX_default)
startY = self.prefs.get_int("startX", CameraSettingsActivity.startY_default)
endX = self.prefs.get_int("startX", CameraSettingsActivity.endX_default)
endY = self.prefs.get_int("startX", CameraSettingsActivity.endY_default)
offsetX = self.prefs.get_int("startX", CameraSettingsActivity.offsetX_default)
offsetY = self.prefs.get_int("startX", CameraSettingsActivity.offsetY_default)
totalX = self.prefs.get_int("startX", CameraSettingsActivity.totalX_default)
totalY = self.prefs.get_int("startX", CameraSettingsActivity.totalY_default)
outputX = self.prefs.get_int("startX", CameraSettingsActivity.outputX_default)
outputY = self.prefs.get_int("startX", CameraSettingsActivity.outputY_default)
scale = self.prefs.get_bool("scale", CameraSettingsActivity.scale_default)
binning = self.prefs.get_bool("binning", CameraSettingsActivity.binning_default)
result = self.cam.set_res_raw(startX,startY,endX,endY,offsetX,offsetY,totalX,totalY,outputX,outputY,scale,binning)
print(f"self.cam.set_res_raw returned {result}")
"""
@@ -74,8 +74,7 @@ class CameraSettingsActivity(Activity):
"raw_gma": False, # Disable raw gamma for better contrast
}
# Resolution options for both ESP32 and webcam
# Webcam supports all ESP32 resolutions via automatic cropping/padding
# Resolution options are the same for all cameras for now (can be split later)
RESOLUTIONS = [
("96x96", "96x96"),
("160x120", "160x120"),
@@ -114,7 +113,6 @@ class CameraSettingsActivity(Activity):
self.dependent_controls = {}
def onCreate(self):
self.use_webcam = self.getIntent().extras.get("use_webcam")
self.prefs = self.getIntent().extras.get("prefs")
self.scanqr_mode = self.getIntent().extras.get("scanqr_mode")
@@ -132,16 +130,14 @@ class CameraSettingsActivity(Activity):
basic_tab = tabview.add_tab("Basic")
self.create_basic_tab(basic_tab, self.prefs)
# Create Advanced and Expert tabs only for ESP32 camera
if not self.use_webcam or True: # for now, show all tabs
advanced_tab = tabview.add_tab("Advanced")
self.create_advanced_tab(advanced_tab, self.prefs)
advanced_tab = tabview.add_tab("Advanced")
self.create_advanced_tab(advanced_tab, self.prefs)
expert_tab = tabview.add_tab("Expert")
self.create_expert_tab(expert_tab, self.prefs)
expert_tab = tabview.add_tab("Expert")
self.create_expert_tab(expert_tab, self.prefs)
#raw_tab = tabview.add_tab("Raw")
#self.create_raw_tab(raw_tab, self.prefs)
#raw_tab = tabview.add_tab("Raw")
#self.create_raw_tab(raw_tab, self.prefs)
self.setContentView(screen)