Slender commited on
Commit
dbd339c
·
1 Parent(s): 17c6205
Files changed (5) hide show
  1. DFK33UX174.json +17 -0
  2. Raspi_Cam.json +17 -0
  3. app.py +103 -0
  4. camera_parameters.json +1 -0
  5. requirements.txt +5 -0
DFK33UX174.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cameraName": "DFK-33UX174",
3
+ "cameraSensorWidth": 5.86,
4
+ "cameraSensorHeight": 5.86,
5
+ "iCx": 948.0,
6
+ "iCy": 576.0,
7
+ "ratio": 1,
8
+ "imageWidth": 1920,
9
+ "imageHeight": 1200,
10
+ "calibrationRatio": 3,
11
+ "parameter0": 0,
12
+ "parameter1": 3.6546,
13
+ "parameter2": -16.963,
14
+ "parameter3": 23.279,
15
+ "parameter4": -8.6849,
16
+ "parameter5": 84.09
17
+ }
Raspi_Cam.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cameraName": "resp220",
3
+ "cameraSensorWidth": 1.4,
4
+ "cameraSensorHeight": 1.4,
5
+ "iCx": 1298,
6
+ "iCy": 966,
7
+ "ratio": 1.0,
8
+ "imageWidth": 2592,
9
+ "imageHeight": 1944,
10
+ "calibrationRatio": 4.05,
11
+ "parameter0": 0,
12
+ "parameter1": 0,
13
+ "parameter2": 0,
14
+ "parameter3": 0,
15
+ "parameter4": -47.96,
16
+ "parameter5": 222.86
17
+ }
app.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import streamlit as st
3
+ from streamlit_webrtc import webrtc_streamer
4
+ import numpy as np
5
+ from PIL import Image
6
+ from Moildev import Moildev
7
+ import threading
8
+
9
+ moildev = Moildev('Raspi_Cam.json')
10
+
11
+ def brighten_image(image, amount):
12
+ img_bright = cv2.convertScaleAbs(image, beta=amount)
13
+ return img_bright
14
+
15
+
16
+ def anypoint_image(image, alpha, beta, zoom, mode):
17
+ any_image = moildev.anypoint(image, alpha, beta, zoom, mode)
18
+ return any_image
19
+
20
+
21
+ def main_loop():
22
+
23
+
24
+ st.title("MoilDev Demo App")
25
+ st.subheader("This app allows you to play with Image filters!")
26
+ st.text("We use OpenCV and Streamlit for this demo")
27
+
28
+
29
+ # radio
30
+ source = st.sidebar.radio('Sources:', ('image','video'))
31
+
32
+ if source == 'image':
33
+
34
+ # slider
35
+ zoom = st.sidebar.slider("Zoom", min_value=1.0, max_value=3.5, value=1.2)
36
+ alpha = st.sidebar.slider("Alpha", min_value=0.0, max_value=180.0, value=60.0)
37
+ beta = st.sidebar.slider("Beta", min_value=0.0, max_value=180.0, value=60.0)
38
+ brightness_amount = st.sidebar.slider("Brightness", min_value=-50, max_value=50, value=0)
39
+
40
+ # checkbox
41
+ mode_filter = st.sidebar.checkbox('Car Mode')
42
+
43
+ image_file = st.file_uploader("Upload Your Image", type=['jpg', 'png', 'jpeg'])
44
+ if not image_file:
45
+ return None
46
+
47
+ original_image = Image.open(image_file)
48
+ original_image = np.array(original_image)
49
+
50
+ if mode_filter == 1:
51
+ processed_image = anypoint_image(original_image, alpha=alpha, beta=beta, zoom=zoom, mode=1)
52
+
53
+ else:
54
+ processed_image = anypoint_image(original_image, alpha=alpha, beta=beta, zoom=zoom, mode=2)
55
+
56
+
57
+ processed_image = brighten_image(processed_image, brightness_amount)
58
+ st.text("Original Image vs Processed Image")
59
+ st.image([original_image, processed_image])
60
+
61
+ if source == 'video':
62
+
63
+ # slider
64
+ zoom = st.sidebar.slider("Zoom", min_value=1.0, max_value=3.5, value=1.2)
65
+ alpha = st.sidebar.slider("Alpha", min_value=0.0, max_value=180.0, value=60.0)
66
+ beta = st.sidebar.slider("Beta", min_value=0.0, max_value=180.0, value=60.0)
67
+
68
+ # checkbox
69
+ mode_filter = st.sidebar.checkbox('Car Mode')
70
+
71
+ lock = threading.Lock()
72
+ img_container = {"img": None}
73
+
74
+ def video_frame_callback(frame):
75
+ img = frame.to_ndarray(format="bgr24")
76
+ with lock:
77
+ img_container["img"] = img
78
+ return frame
79
+
80
+ ctx = webrtc_streamer(key="example", video_frame_callback=video_frame_callback)
81
+ vsn_place = st.empty()
82
+
83
+
84
+ while ctx.state.playing:
85
+ cv2.waitKey(10)
86
+
87
+ with lock:
88
+ img = img_container["img"]
89
+ if img is None:
90
+ continue
91
+
92
+ if mode_filter == 1:
93
+ processed_image = anypoint_image(img, alpha=alpha, beta=beta, zoom=zoom, mode=1)
94
+ vsn_place.image(processed_image)
95
+
96
+ else:
97
+ processed_image = anypoint_image(img, alpha=alpha, beta=beta, zoom=zoom, mode=2)
98
+ vsn_place.image(processed_image)
99
+
100
+
101
+
102
+ if __name__ == '__main__':
103
+ main_loop()
camera_parameters.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"Axis": {"cameraName": "axis", "cameraFov": 220, "cameraSensorWidth": 1.4, "cameraSensorHeight": 1.4, "iCx": 1439, "iCy": 1439, "ratio": 1.0, "imageWidth": 2880, "imageHeight": 2880, "calibrationRatio": 6, "parameter0": 0, "parameter1": 0, "parameter2": 0, "parameter3": -7.76, "parameter4": 7.3355, "parameter5": 156.36}, "Raspi": {"cameraName": "resp220", "cameraFov": 220, "cameraSensorWidth": 1.4, "cameraSensorHeight": 1.4, "iCx": 1298, "iCy": 966, "ratio": 1.0, "imageWidth": 2592, "imageHeight": 1944, "calibrationRatio": 4.05, "parameter0": 0, "parameter1": 0, "parameter2": 0, "parameter3": 0, "parameter4": -47.96, "parameter5": 222.86}, "Intel_L": {"cameraName": "Intel-T265", "cameraFov": 180,"cameraSensorWidth": 3, "cameraSensorHeight": 3, "iCx": 429, "iCy": 395, "ratio": 1, "imageWidth": 848, "imageHeight": 800, "calibrationRatio": 1.67, "parameter0": 0, "parameter1": 0, "parameter2": -24.964, "parameter3": 38.2, "parameter4": -16.956, "parameter5": 183.42}, "Intel_R": {"cameraName": "Intel-T265", "cameraFov": 180, "cameraSensorWidth": 3, "cameraSensorHeight": 3, "iCx": 431, "iCy": 397, "ratio": 1, "imageWidth": 848, "imageHeight": 800, "calibrationRatio": 1.67, "parameter0": 0, "parameter1": 0, "parameter2": -24.964, "parameter3": 38.2, "parameter4": -16.956, "parameter5": 183.42}, "socionext": {"cameraName": "socionext", "cameraFov": 180,"cameraSensorWidth": 1.14, "cameraSensorHeight": 1.69, "iCx": 950, "iCy": 744, "ratio": 1.48, "imageWidth": 1920, "imageHeight": 1440, "calibrationRatio": 3.0, "parameter0": 0, "parameter1": 0, "parameter2": 0, "parameter3": -15.921, "parameter4": 31.337, "parameter5": 140.48}, "entaniya": {"cameraName": "entaniya","cameraFov": 220, "cameraSensorWidth": 1.2, "cameraSensorHeight": 1.2, "iCx": 1295, "iCy": 972, "ratio": 1.0, "imageWidth": 2592, "imageHeight": 1944, "calibrationRatio": 4.05, "parameter0": 0.0, "parameter1": 0.0, "parameter2": 0.0, "parameter3": -17.539, "parameter4": 31.802, "parameter5": 133.39}, "endoscope": {"cameraName": "endoscope", "cameraFov": 180,"cameraSensorWidth": 2.0, "cameraSensorHeight": 2.0, "iCx": 1120, "iCy": 520, "ratio": 1.0, "imageWidth": 1920, "imageHeight": 1080, "calibrationRatio": 4.05, "parameter0": 0.0, "parameter1": 0.0, "parameter2": 0.0, "parameter3": 0.0, "parameter4": 0.0, "parameter5": 130.0}}
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ streamlit==1.10.0
2
+ opencv-python==4.6.0.66
3
+ Pillow==9.1.1
4
+ Moildev==3.1.0
5
+ streamlit-webrtc==0.40.0