Switch to JPG format

This commit is contained in:
ABelliqueux 2025-01-04 11:51:16 +01:00
parent 0bf7fb9d98
commit 913a4b7eb6
3 changed files with 34 additions and 15 deletions

View File

@ -1,21 +1,23 @@
[DEFAULT]
cam_is_showmewebcam = true
cam_is_picam = true
cam_is_showmewebcam = false
use_date_for_folder = false
file_extension = 'png'
file_extension = 'jpg'
jpg_quality = 88
projects_folder = ''
onion_skin_onstartup = true
onionskin_alpha_default = 0.5
fullscreen_bool = true
screen_w = 1920
screen_h = 1080
screen_w = 1440
screen_h = 900
framerate = 16
ffmpeg_path = '/usr/bin/ffmpeg'
export_options = 'scale=1920:-1,crop=1920:1080'
[CAMERA]
cam_w = 1600
cam_h = 900
vflip = 1
hflip = 1
cam_w = 1920
cam_h = 1080
vflip = 0
hflip = 0
auto_exposure = 1
white_balance_auto_preset = 2
white_balance_auto_preset = 1
video_bitrate=25000000

View File

@ -32,8 +32,10 @@ _ = gettext.translation('template', localedir='locales', languages=[LOCALE]).get
project_settings_defaults = {
'cam_is_picam': True,
'cam_is_showmewebcam': False,
'cam_is_dslr': False,
'use_date_for_folder': False,
'file_extension':'png',
'jpg_quality':90,
'projects_folder': '',
'onion_skin_onstartup' : False,
'onionskin_alpha_default' : 0.4,
@ -71,6 +73,8 @@ for location in config_locations:
config_found_msg = _("Found configuration file in {}").format(os.path.expanduser(location))
print(config_found_msg)
# Populate default values according to config and camera type
if project_settings['cam_is_showmewebcam']:
camera_current_settings = {
'auto_exposure': dict(min=0, max=1, default=camera_settings['auto_exposure'], value=camera_settings['auto_exposure']),
@ -79,7 +83,8 @@ if project_settings['cam_is_showmewebcam']:
'vertical_flip': dict(min=0, max=1, default=camera_settings['vflip'], value=camera_settings['vflip']),
'video_bitrate': dict(min=25000000, max=25000000, default=camera_settings['video_bitrate'], value=camera_settings['video_bitrate']),
}
else:
elif project_settings['cam_is_picam']:
# Todo : add framerate ? see "FrameDurationLimits" and "FrameDuration" in camera_controls FrameDurationLimits': (33333, 120000, None)
camera_current_settings = {
'auto_exposure': dict(min=0, max=4, default=camera_settings['auto_exposure'], value=camera_settings['auto_exposure']),
'white_balance_auto_preset': dict(min=0, max=7, default=camera_settings['white_balance_auto_preset'], value=camera_settings['white_balance_auto_preset']),
@ -112,10 +117,14 @@ def apply_cam_setting(cam_settings:dict, to_set:list=None):
else:
print(_("Unknown setting!"))
break
# TODO: Refactor to call method according to cam type
if project_settings['cam_is_showmewebcam']:
serialutils.send_serial_cmd(serialutils.find_cam_port(), cmd.format(*args))
elif project_settings['cam_is_picam']:
pass
elif project_settings['cam_is_dslr']:
pass
else:
# TODO: v4l2 support
print(_("Camera function not supported."))
return cam_settings
@ -477,7 +486,8 @@ def main(args):
'AwbEnable': 1,
'AwbMode': camera_current_settings['white_balance_auto_preset']['default'],
'AeEnable': 1,
'AeExposureMode': camera_current_settings['auto_exposure']['default']
'AeExposureMode': camera_current_settings['auto_exposure']['default'],
# ~ 'FrameDurationLimits':(40000,120000,None)
})
# ~ cam.stop()
@ -658,6 +668,9 @@ def main(args):
print(_("Capture frame"))
img_name = return_next_frame_number(get_last_frame(savepath))
img_path = os.path.join(savepath, img_name)
if project_settings['file_extension'] == 'jpg':
cv2.imwrite(img_path, og_frame, [int(cv2.IMWRITE_JPEG_QUALITY), project_settings['jpg_quality']])
else:
cv2.imwrite(img_path, og_frame)
print(_("File {} written.").format(img_path))
if len(img_list) and (img_list[index] == '{letter}.-001.{ext}'.format(letter=project_letter, ext=project_settings['file_extension'])):

View File

@ -1,10 +1,14 @@
# Stopi2
## Branche libcamera
**Ceci est la branche qui restaure la possibilité d'utiliser des périphériques compatibles rpi-libcamera (Modules Raspicam v1,v2 et v3).**
<a style="max-height: 300px;display: inline-block;" href="./stopi2/raw/branch/master/stopi_station.jpg"><img src="./stopi_station.jpg"/><a/>
Seconde version du script python [stopi](https://git.arthus.net/arthus/stopi) destiné à être utilisé avec une télécommande [picote](/arthus/picote).
Cette version utilise opencv et ne fonctionne pour le moment qu'avec une webcam.
Cette version utilise opencv et libcamera.Elle fonctionne avec une webcam ou un module vidéo Picamera (v1,v2 ou v3).
Encore une fois, l'objectif est de créer un logiciel simple et minimaliste dans son interface, dont les caractéristiques sont les suivantes :
* Affichage des images en plein écran sans interface : toutes les fonctions utilisent quelques touches du clavier.
@ -17,7 +21,7 @@ Encore une fois, l'objectif est de créer un logiciel simple et minimaliste dans
## Banc de test
Ce script a été testé avec une webcam compatible V4L2, et plus précisement une ["showmewebcam"](https://github.com/showmewebcam/showmewebcam) à base de rpi 0 et d'un module caméra v2 (8Mp), et un ordinateur classique sous [Debian](https://debian.org).
Ce script a été testé avec une webcam compatible V4L2, une ["showmewebcam"](https://github.com/showmewebcam/showmewebcam) à base de rpi 0 et d'un module caméra v2 (8Mp), et un ordinateur classique sous [Debian](https://debian.org) et un [RPI 4B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/) munis d'un module [Picamera V3](https://www.raspberrypi.com/products/camera-module-3/).
Les contributions et rapports de bugs sont les bienvenus !
## Installation