Project

General

Profile

Project Setup Guide » History » Version 4

Nathanael Muin JUSTIN, 01/09/2025 02:12 PM

1 2 Nathanael Muin JUSTIN
> h2. [[Team Members]] | [[Meeting Documentation]] | [[The Wiki]] | [[User Manual]] | [[Functional & Non-Functional Requirements]] | [[Math Document]] | [[UML Diagrams]] | [[Results]]
2
3 1 Nathanael Muin JUSTIN
h1. Project Setup Guide
4 3 Nathanael Muin JUSTIN
5
------------------------------------------------------------
6
7 4 Nathanael Muin JUSTIN
h1. 1. Setting Up the Project
8 3 Nathanael Muin JUSTIN
9
h2. Prerequisites
10
11
*Operating System:*
12
* Recommended: Mac OS.
13
* The code should generally run on Windows or Linux as well, provided Python 3.x is installed.
14
*Python Version:*
15
* You need Python 3.x (e.g., 3.8 or newer).
16
*Dependencies:*
17
* NumPy (version 2.2.0)
18
* OpenCV-Python (version 4.10.0.84)
19
* Python-Dotenv (version 1.0.1)
20
* You can install them via:
21
<pre>
22
pip install numpy==2.2.0 opencv-python==4.10.0.84 python-dotenv==1.0.1
23
</pre>
24
25
h2. Project Folder Structure
26
27
A typical folder layout:
28
<pre>
29
.
30
├── run.sh
31
├── main.py
32
├── image_configuration.py
33
├── image.py
34
├── image_configuration.env
35
└── lib/
36
    └── ...
37
</pre>
38
* *main.py:* The main entry point; orchestrates loading configs, applying masks, and displaying the image.
39
* *image_configuration.py:* Retrieves environment variables (e.g., file paths, projector distances).
40
* *image.py:* Reads the image and applies the overlap mask.
41
* *image_configuration.env:* Stores environment variables (SIDE, DISTANCE_BETWEEN_PROJECTOR_CM, etc.).
42
* *run.sh:* Shell script to run the project (optional but convenient).
43
44
45 4 Nathanael Muin JUSTIN
h1. 2. Step-by-Step Installation & Configuration
46 3 Nathanael Muin JUSTIN
47
h2. Clone or Download the Repository
48
49
# Clone the repository (if using Git):
50
<pre>
51
git clone https://github.com/your-username/your-project.git
52
</pre>
53
Or download the project folder from your source (ZIP download, etc.) and unzip it locally.
54
# Navigate into the project directory:
55
<pre>
56
cd your-project
57
</pre>
58
59
h2. Install Dependencies
60
61
Ensure Python 3.x is available, then install the required libraries:
62
<pre>
63
pip install numpy==2.2.0 opencv-python==4.10.0.84 python-dotenv==1.0.1
64
</pre>
65
(If you have a virtual environment, make sure it’s activated before installing.)
66
67
h2. Prepare the Configuration File
68
69
# Locate or create the file named image_configuration.env.
70
# Set the following environment variables:
71
<pre>
72
SIDE=left
73
IMAGE_FILE_PATH=/path/to/your/image.jpg
74
DISTANCE_BETWEEN_PROJECTOR_CM=100
75
PROJECTION_WIDTH_CM=200
76
77
# SIDE: which side of the image you are projecting (left or right).
78
# IMAGE_FILE_PATH: path to the .jpeg or .png image.
79
# DISTANCE_BETWEEN_PROJECTOR_CM: distance between your two projectors, in centimeters (x).
80
# PROJECTION_WIDTH_CM: total width of the final projection, in centimeters (y).
81 1 Nathanael Muin JUSTIN
</pre>
82
# Save the file in the same directory as main.py.
83 4 Nathanael Muin JUSTIN
84
h2. Make the Shell Script Executable (Optional)
85
86
If you intend to use the provided run.sh script:
87
<pre>
88
chmod +x run.sh
89
</pre>
90
91
h1. 3. Accessing Required Resources
92
93
* Repositories:
94
# Ensure you have access to the main Git repository (or the code you’ve downloaded).
95
# If there are any submodules or additional repos, update/clone them as documented.
96
97
* APIs:
98
# This project does not use external APIs by default. If you integrate external APIs (e.g., for image storage or retrieval), ensure you have valid credentials/config.
99
100
* Libraries:
101
# The only libraries required are already listed in Dependencies.
102
# If your environment blocks direct internet access, you may need to manually download .whl files or source distributions for NumPy, OpenCV, and python-dotenv, then install them.
103
104
h1. 4. Running the Project
105
106
You can run the project two ways:
107
108
h2. Via run.sh
109
110
# Make sure run.sh is executable.
111
# In a terminal, run:
112
<pre>
113
./run.sh
114
</pre>
115
# The script will call main.py, load the configuration, apply the mask, and display the image.
116
117
h2. Directly with Python
118
119
# In a terminal, run:
120
<pre>
121
python main.py
122
</pre>
123
# This directly executes the main file and does the same steps.
124
125
When launched, an OpenCV window will appear displaying your processed (masked) image. Press any key in the OpenCV window to close it.
126
127
128
h1. 5. Common Troubleshooting Steps
129
130
* Black/Blank Image
131
# Check that IMAGE_FILE_PATH in image_configuration.env is correct.
132
# Verify that the image is a valid .jpg or .png.
133
134
* Overlap Not Visible or Inverted
135
# Confirm that DISTANCE_BETWEEN_PROJECTOR_CM < PROJECTION_WIDTH_CM.
136
# Verify you have the correct SIDE set. For instance, if you’re physically on the right side but your .env says SIDE=left, the overlap may look reversed.
137
138
* Import Errors
139
# “No module named X”: check you installed all the required libraries:
140
<pre>
141
pip install numpy==2.2.0 opencv-python==4.10.0.84 python-dotenv==1.0.1
142
</pre>
143
# Confirm you’re using Python 3.x (type python --version or python3 --version).
144
145
* Permission Denied on run.sh
146
# Run chmod +x run.sh and then re-run ./run.sh.
147
148
* Env File Not Found
149
# Ensure image_configuration.env is in the same directory as your Python scripts.
150
# Make sure you are loading the correct file path in ImageConfiguration("image_configuration.env").
151
152
h1. 6. Frequently Asked Questions (FAQ)
153
154
* Does this only work on Mac OS?
155
# While tested on Mac OS, it should run on Windows or Linux if you can install the same Python dependencies.
156
157
* Can I project a video instead of an image?
158
# Currently, it’s set up for static images. You could adapt the code with OpenCV’s video capture methods, but that requires more advanced masking.
159
160
* Why does the overlap region look washed out or darker?
161
# The code applies a simple exponential fade (**0.4) for blending. If you want a different blending curve, adjust the exponent or other interpolation logic in Image.mask().
162
163
* What if I have more than two projectors?
164
# The logic would need to be expanded to handle multiple overlap regions, which is beyond this project’s current scope.