All Projects → evildmp → C Is For Camera

evildmp / C Is For Camera

A 35mm camera, based on the Canonet G-III QL17 rangefinder, simulated in Python.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to C Is For Camera

Mmalsharp
C# wrapper to Broadcom's MMAL with an API to the Raspberry Pi camera.
Stars: ✭ 152 (+10.14%)
Mutual labels:  camera, photography
camera.zero
Combining Camera Zero with an Arducam 12MP camera, a Raspberry Pi Zero WH, a PiMoRoNi trackball breakout, and an Adafruit 16-LED NeoPixel ring will result in a neat little screenless camera that can be controlled with your thumb.
Stars: ✭ 26 (-81.16%)
Mutual labels:  camera, photography
Pbjvision
📸 iOS Media Capture – features touch-to-record video, slow motion, and photography
Stars: ✭ 1,940 (+1305.8%)
Mutual labels:  camera, photography
Nextlevel
NextLevel was initally a weekend project that has now grown into a open community of camera platform enthusists. The software provides foundational components for managing media recording, camera interface customization, gestural interaction customization, and image streaming on iOS. The same capabilities can also be found in apps such as Snapchat, Instagram, and Vine.
Stars: ✭ 1,940 (+1305.8%)
Mutual labels:  camera, photography
Photo Booth
A multi-platform photo booth software using Electron and your camera
Stars: ✭ 324 (+134.78%)
Mutual labels:  camera, photography
Pynet Pytorch
Generating RGB photos from RAW image files with PyNET (PyTorch)
Stars: ✭ 169 (+22.46%)
Mutual labels:  camera, photography
Pynet
Generating RGB photos from RAW image files with PyNET
Stars: ✭ 211 (+52.9%)
Mutual labels:  camera, photography
TransparentCameraBar
Set the opacity, hide or shrink the camera bars.
Stars: ✭ 15 (-89.13%)
Mutual labels:  camera, photography
Little Backup Box
Software that turns a single-board computer into a versatile and pocketable backup appliance
Stars: ✭ 278 (+101.45%)
Mutual labels:  camera, photography
QuickRawPicker
📷 QuickRawPicker is a free and open source program that lets you cull, pick or rate raw photos captured by your camera. It is also compatible with the XMP sidecar file used by Adobe Bridge/Lightroom/Darktable or PP3 sidecar file used by Rawtherapee.
Stars: ✭ 26 (-81.16%)
Mutual labels:  camera, photography
Kontax Cam
Instant camera hybrid with multiple effects and filters written in Swift.
Stars: ✭ 69 (-50%)
Mutual labels:  camera, photography
Portfolio Photo
Jekyll based portfolio using Flickr API.
Stars: ✭ 15 (-89.13%)
Mutual labels:  camera, photography
Cameracontrollerapi
The CameraControlerApi is an attempt to control a DSLR via REST functionality.
Stars: ✭ 110 (-20.29%)
Mutual labels:  camera, photography
Cellularforms
An implementation of Andy Lomas' Cellular Forms.
Stars: ✭ 124 (-10.14%)
Mutual labels:  simulation
Abce
Agent-based computational Economics, the Python library that makes AB modelling easier
Stars: ✭ 130 (-5.8%)
Mutual labels:  simulation
Privacy Indicator App
🔔 Get the famous "Recording Indicators" feature of iOS14 to android. Get notified every time a third-party app or a service uses camera or microphone.
Stars: ✭ 124 (-10.14%)
Mutual labels:  camera
Seissol
A scientific software for the numerical simulation of seismic wave phenomena and earthquake dynamics
Stars: ✭ 123 (-10.87%)
Mutual labels:  simulation
Phy Net
compressing physics with neural networks
Stars: ✭ 133 (-3.62%)
Mutual labels:  simulation
Df Style Worldgen
Fantasy Worlds Procedurally Generated
Stars: ✭ 130 (-5.8%)
Mutual labels:  simulation
Molecular Design Toolkit
Notebook-integrated tools for molecular simulation and visualization
Stars: ✭ 123 (-10.87%)
Mutual labels:  simulation

c is for Camera

A 35mm camera, based on the Canonet G-III QL17 <https://en.wikipedia.org/wiki/Canonet_G-III_QL17>_ rangefinder, simulated in Python.

The purpose of this project is to explore and understand the logic in the mechanisms of a camera by using object-oriented programming to represent real-world objects. It's also a way to appreciate the intricate mechanical logic embodied in a device like a camera.

.. image:: /docs/images/QL17.jpg :alt: 'Canonet G-III QL17'

It aims towards completeness in its modelling of the real world. For example, if you open the back of the camera in daylight with a partially exposed film, it will ruin the film.

See the c is for Camera documentation <https://c-is-for-camera.readthedocs.io>_.

A quick tour

Clone the repository::

git clone https://github.com/evildmp/C-is-for-Camera.git

or::

git clone [email protected]:evildmp/C-is-for-Camera.git

In the C-is-for-Camera directory, start a Python 3 shell.

::

>>> from camera import Camera
>>> c = Camera()

See the camera's state::

>>> c.state()
================== Camera state =================

------------------ Controls ---------------------
Selected speed:            1/120

------------------ Mechanical -------------------
Back closed:               True
Lens cap on:               False
Film advance mechanism:    False
Frame counter:             0
Shutter cocked:            False
Shutter timer:             1/128 seconds
Iris aperture:             ƒ/16
Camera exposure settings:  15.0 EV

------------------ Metering ---------------------
Light meter reading:        4096 cd/m^2
Exposure target:            15.0 EV
Mode:                       Shutter priority
Battery:                    1.44 V
Film speed:                 100 ISO

------------------ Film -------------------------
Speed:                      100 ISO
Rewound into cartridge:     False
Exposed frames:             0 (of 24)
Ruined:                     False

------------------ Environment ------------------
Scene luminosity:           4096 cd/m^2

Advance the film::

>>> c.film_advance_mechanism.advance()
On frame 0 (of 24)
Advancing film
On frame 1 (of 24)
Cocking shutter
Cocked

Release the shutter::

>>> c.shutter.trip()
Shutter openening for 1/128 seconds
Shutter closes
Shutter uncocked
'Tripped'

It's not possible to advance the mechanism twice without releasing the shutter::

>>> c.film_advance_mechanism.advance()
On frame 1 (of 24)
Advancing film
On frame 2 (of 24)
Cocking shutter
Cocked
>>> c.film_advance_mechanism.advance()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/daniele/Repositories/camera/camera.py", line 56, in advance
    raise self.AlreadyAdvanced
camera.AlreadyAdvanced

If you open the back in daylight it ruins the film::

>>> c.back.open()
Opening back
Resetting frame counter to 0
'Film is ruined'

Close the back and rewind the film::

>>> c.back.close()
Closing back
>>> c.film_rewind_mechanism.rewind()
Rewinding film
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].