Tech-dat/media-dat/video-dat/vision-dat/vision-dat.md
... ...
@@ -1,47 +0,0 @@
1
-
2
-# vision-dat
3
-
4
-Open source vision project:
5
-
6
-## 1. OpenCV (Open Source Computer Vision Library)
7
-- **Language**: C++, Python, Java
8
-- **Use Case**: Image processing, object detection, tracking, feature extraction.
9
-- **GitHub**: [https://github.com/opencv/opencv](https://github.com/opencv/opencv)
10
-- **Note**: The foundation of most vision projects; highly modular.
11
-
12
----
13
-
14
-## 2. YOLO (You Only Look Once)
15
-- **Language**: Python, C++
16
-- **Use Case**: Real-time object detection.
17
-- **GitHub**: [https://github.com/ultralytics/yolov5](https://github.com/ultralytics/yolov5)
18
-- **Note**: Fast, widely used for real-time detection.
19
-
20
-
21
-- [[OPENCV-dat]] - [[OPENMV-dat]]
22
-
23
-
24
-| Feature / Aspect | **OpenMV** | **OpenCV** |
25
-| ------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
26
-| **Type** | Hardware + Firmware (microcontroller-based smart camera) | Software library (runs on PC, Raspberry Pi, etc.) |
27
-| **Main Goal** | Embedded **AI vision camera** for edge detection, color tracking, face/object recognition β€” all **onboard** | Comprehensive **computer vision library** for image/video processing, ML, and AI applications |
28
-| **Programming Language** | MicroPython (simplified for embedded use) | C++, Python, Java, etc. |
29
-| **Processing Power** | Runs on ARM Cortex-M (or H7) MCU – limited but real-time and low power | Depends on host system (CPU/GPU/TPU). Can handle deep learning, OpenCL, CUDA acceleration |
30
-| **AI / ML Capability** | Supports basic CNN models and TensorFlow Lite Micro | Supports **DNN module**, full TensorFlow / PyTorch integration, YOLO, OpenVINO, etc. |
31
-| **Ease of Use** | Plug-and-play, with OpenMV IDE and onboard camera | Requires manual setup and coding environment |
32
-| **Use Case Examples** | Line following robots, color blob tracking, face detection for IoT | Face recognition, motion tracking, object detection, SLAM, AR, advanced analytics |
33
-| **Hardware Integration** | Standalone camera module | Depends on external camera (USB, IP, CSI, etc.) |
34
-| **Community & Ecosystem** | Smaller but focused on robotics and IoT | Very large global developer and research community |
35
-| **Example Devices** | OpenMV Cam H7, OpenMV Cam RT1062, OpenMV PureThermal | Works with any PC, Raspberry Pi, NVIDIA Jetson, etc. |
36
-
37
-**Summary:**
38
-- 🧠 **OpenCV** is the *most advanced* and widely recognized **computer vision framework** for research, AI, and deep learning.
39
-- 🎯 **OpenMV** is a *self-contained smart camera project* designed for embedded systems and robotics β€” simpler but more practical for real-time low-power vision at the edge.
40
-
41
-
42
-
43
-
44
-
45
-## ref
46
-
47
-- [[sensor-Camera-dat]]
... ...
\ No newline at end of file
Tech-dat/sensor-camera-dat/camera-SDK-dat/openMV-dat/openMV-dat.md
... ...
@@ -1,6 +0,0 @@
1
-
2
-# openMV-dat
3
-
4
-- https://github.com/openmv/openmv
5
-
6
-The ESP32 is much slower than the H7 or IMX. So, it’s really just a port for the sake of it. Actual performance will be very low.
... ...
\ No newline at end of file
Tech-dat/sensor-camera-dat/camera-SDK-dat/opencv-dat.md
... ...
@@ -1,176 +0,0 @@
1
-
2
-# opencv-dat
3
-
4
-- [[camera-sdk-dat]]
5
-
6
-
7
-Using OpenCV with Python on Android (via Termux or Pydroid3)
8
-
9
-Install Pydroid3 from Play Store.
10
-
11
-Inside Pydroid3, run: pip install opencv-python
12
-
13
-Then you can run normal OpenCV Python scripts:
14
-
15
-```
16
-import cv2
17
-img = cv2.imread("photo.jpg")
18
-gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
19
-cv2.imshow("Gray", gray)
20
-cv2.waitKey(0)
21
-```
22
-
23
-
24
-
25
-## demo code
26
-
27
- # run this on Linux PC with opencv-python module
28
-
29
- import cv2
30
-
31
- dropped = 0 # drop frames count
32
-
33
- # 192.168.4.44 - AIT esp32s
34
- # Change this to your board IP
35
- # http-based streaming not RTSP
36
- vid = cv2.VideoCapture('http://192.168.4.97/ait/Hi-AIT-123') # open webcam capture
37
-
38
- while True:
39
- ret, frame = vid.read() # get frame-by-frame
40
- #print(vid.isOpened(), ret)
41
- if frame is not None:
42
- if dropped > 0: dropped = 0 # reset
43
- cv2.imshow('Video-44',frame) # display frame
44
- if cv2.waitKey(22) & 0xFF == ord('q'): # press q to quit
45
- break
46
- else:
47
- dropped += 1
48
- if dropped > 100:
49
- print("Server is down")
50
- break
51
-
52
- # Done, clear all resources
53
- vid.release()
54
- cv2.destroyAllWindows()
55
- print("Video stop")
56
-
57
-## face detection
58
-
59
- import cv2
60
-
61
- dropped = 0 # drop frames count
62
- from cvzone import FaceDetectionModule
63
-
64
- face = FaceDetectionModule.FaceDetector()
65
-
66
- # Change this to your board IP
67
- # url = 'http://192.168.4.74/free/Hi-Nove-La'a # freenove
68
- # url = 'http://192.168.4.70/xiao/Hi-Xiao-Ling' # xio
69
- # url = 'http://192.168.4.71/lily/Hi-Lily-Goen' # lilygo
70
- url = 'http://192.168.4.97/ait/Hi-AIT-123' # esp32 AiThinker
71
-
72
- vid = cv2.VideoCapture(url) # open webcam capture, http-based streaming. Not RTSP
73
-
74
- while True:
75
- ret, frame = vid.read() # get frame-by-frame
76
- #print(vid.isOpened(), ret)
77
- if frame is not None:
78
- if dropped > 0: dropped = 0 # reset
79
- frame, faces = face.findFaces(frame)
80
- # if faces:
81
- # do other face processing
82
- cv2.imshow('Faces',frame) # display frame
83
- if cv2.waitKey(22) & 0xFF == ord('q'): # press q to quit
84
- break
85
- else:
86
- dropped += 1
87
- if dropped > 100:
88
- print("Server is down")
89
- break
90
-
91
- # Done, clear all resources
92
- vid.release()
93
- cv2.destroyAllWindows()
94
- print("Video stop")
95
-
96
-## hands detection
97
-
98
- # run this on Linux PC with opencv-python module
99
-
100
- import cv2
101
- from cvzone.HandTrackingModule import HandDetector
102
-
103
-
104
- # Hands = HandDetector(staticMode=False, maxHands=2, modelComplexity=1, detectionCon=0.5, minTrackCon=0.5)
105
- Hands = HandDetector(detectionCon=0.5)
106
- # if not detected try move your hands away from the camera
107
-
108
- # Change this to your board IP
109
- # Try first with web-browser, you will see image stream if OK
110
- # http-based image streaming server
111
-
112
- # url = 'http://192.168.4.74/free/Hi-Nove-La' # freenove
113
- # url = 'http://192.168.4.70/xiao/Hi-Xiao-Ling' # xio
114
- # url = 'http://192.168.4.71/lily/Hi-Lily-Goen' # lilygo
115
- url = 'http://192.168.4.97/ait/Hi-AIT-123' # esp32 AiThinker
116
-
117
- vid = cv2.VideoCapture(url) # open webcam capture
118
-
119
- dropped = 0 # drop frames count
120
- while True:
121
- ret, frame = vid.read() # get frame-by-frame
122
- if frame is not None:
123
- if dropped > 0: dropped = 0 # reset
124
- hands, frame = Hands.findHands(frame, draw=True, flipType=True)
125
- # Check if any hands are detected
126
- if hands:
127
- # Information for the first hand detected
128
- hand1 = hands[0] # Get the first hand detected
129
- # lmList1 = hand1["lmList"] # List of 21 landmarks for the first hand
130
- bbox1 = hand1["bbox"] # Bounding box around the first hand
131
- # (x,y,w,h coordinates)
132
- center1 = hand1['center'] # Center coordinates of the first hand
133
- handType1 = hand1["type"] # Type of the first hand ("Left" or "Right")
134
-
135
- # Count the number of fingers up for the first hand
136
- # fingers1 = Hands.fingersUp(hand1)
137
- # print(f'H1 = {fingers1.count(1)}', end=" ")
138
-
139
- # Calculate distance between specific landmarks on the first hand
140
- # and draw it on the image
141
- # length, info, frame = Hands.findDistance(lmList1[8][0:2], lmList1[12][0:2], frame, color=(255, 0, 255), scale=10)
142
-
143
- # Check if a second hand is detected
144
- if len(hands) == 2:
145
- # Information for the second hand
146
- hand2 = hands[1]
147
- # lmList2 = hand2["lmList"]
148
- bbox2 = hand2["bbox"]
149
- center2 = hand2['center']
150
- handType2 = hand2["type"]
151
-
152
- # Count the number of fingers up for the second hand
153
- # fingers2 = Hands.fingersUp(hand2)
154
- # print(f'H2 = {fingers2.count(1)}', end=" ")
155
-
156
- # Calculate distance between the index fingers of both hands
157
- # and draw it on the image
158
- # length, info, frame = Hands.findDistance(lmList1[8][0:2], lmList2[8][0:2], frame, color=(255, 0, 0), scale=10)
159
-
160
- # print(" ") # New line for better readability of the printed output
161
- # show image
162
- cv2.imshow('Hands',frame) # display frame
163
- # define abort key
164
- if cv2.waitKey(22) & 0xFF == ord('q'): # press q to quit
165
- break
166
- else:
167
- dropped += 1
168
- if dropped > 100:
169
- print("Server is down")
170
- break
171
-
172
- # Done, clear all resources
173
- vid.release()
174
- cv2.destroyAllWindows()
175
- print("Video stop")
176
-
Tech-dat/vision-dat/openMV-dat/openMV-dat.md
... ...
@@ -0,0 +1,6 @@
1
+
2
+# openMV-dat
3
+
4
+- https://github.com/openmv/openmv
5
+
6
+The ESP32 is much slower than the H7 or IMX. So, it’s really just a port for the sake of it. Actual performance will be very low.
... ...
\ No newline at end of file
Tech-dat/vision-dat/opencv-dat/opencv-dat.md
... ...
@@ -0,0 +1,183 @@
1
+
2
+# opencv-dat
3
+
4
+- [[camera-sdk-dat]] - [[Android-dat]]
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+## android
13
+
14
+Using OpenCV with Python on Android (via Termux or Pydroid3)
15
+
16
+Install Pydroid3 from Play Store.
17
+
18
+Inside Pydroid3, run: pip install opencv-python
19
+
20
+Then you can run normal OpenCV Python scripts:
21
+
22
+```
23
+import cv2
24
+img = cv2.imread("photo.jpg")
25
+gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
26
+cv2.imshow("Gray", gray)
27
+cv2.waitKey(0)
28
+```
29
+
30
+
31
+
32
+## demo code
33
+
34
+ # run this on Linux PC with opencv-python module
35
+
36
+ import cv2
37
+
38
+ dropped = 0 # drop frames count
39
+
40
+ # 192.168.4.44 - AIT esp32s
41
+ # Change this to your board IP
42
+ # http-based streaming not RTSP
43
+ vid = cv2.VideoCapture('http://192.168.4.97/ait/Hi-AIT-123') # open webcam capture
44
+
45
+ while True:
46
+ ret, frame = vid.read() # get frame-by-frame
47
+ #print(vid.isOpened(), ret)
48
+ if frame is not None:
49
+ if dropped > 0: dropped = 0 # reset
50
+ cv2.imshow('Video-44',frame) # display frame
51
+ if cv2.waitKey(22) & 0xFF == ord('q'): # press q to quit
52
+ break
53
+ else:
54
+ dropped += 1
55
+ if dropped > 100:
56
+ print("Server is down")
57
+ break
58
+
59
+ # Done, clear all resources
60
+ vid.release()
61
+ cv2.destroyAllWindows()
62
+ print("Video stop")
63
+
64
+## face detection
65
+
66
+ import cv2
67
+
68
+ dropped = 0 # drop frames count
69
+ from cvzone import FaceDetectionModule
70
+
71
+ face = FaceDetectionModule.FaceDetector()
72
+
73
+ # Change this to your board IP
74
+ # url = 'http://192.168.4.74/free/Hi-Nove-La'a # freenove
75
+ # url = 'http://192.168.4.70/xiao/Hi-Xiao-Ling' # xio
76
+ # url = 'http://192.168.4.71/lily/Hi-Lily-Goen' # lilygo
77
+ url = 'http://192.168.4.97/ait/Hi-AIT-123' # esp32 AiThinker
78
+
79
+ vid = cv2.VideoCapture(url) # open webcam capture, http-based streaming. Not RTSP
80
+
81
+ while True:
82
+ ret, frame = vid.read() # get frame-by-frame
83
+ #print(vid.isOpened(), ret)
84
+ if frame is not None:
85
+ if dropped > 0: dropped = 0 # reset
86
+ frame, faces = face.findFaces(frame)
87
+ # if faces:
88
+ # do other face processing
89
+ cv2.imshow('Faces',frame) # display frame
90
+ if cv2.waitKey(22) & 0xFF == ord('q'): # press q to quit
91
+ break
92
+ else:
93
+ dropped += 1
94
+ if dropped > 100:
95
+ print("Server is down")
96
+ break
97
+
98
+ # Done, clear all resources
99
+ vid.release()
100
+ cv2.destroyAllWindows()
101
+ print("Video stop")
102
+
103
+## hands detection
104
+
105
+ # run this on Linux PC with opencv-python module
106
+
107
+ import cv2
108
+ from cvzone.HandTrackingModule import HandDetector
109
+
110
+
111
+ # Hands = HandDetector(staticMode=False, maxHands=2, modelComplexity=1, detectionCon=0.5, minTrackCon=0.5)
112
+ Hands = HandDetector(detectionCon=0.5)
113
+ # if not detected try move your hands away from the camera
114
+
115
+ # Change this to your board IP
116
+ # Try first with web-browser, you will see image stream if OK
117
+ # http-based image streaming server
118
+
119
+ # url = 'http://192.168.4.74/free/Hi-Nove-La' # freenove
120
+ # url = 'http://192.168.4.70/xiao/Hi-Xiao-Ling' # xio
121
+ # url = 'http://192.168.4.71/lily/Hi-Lily-Goen' # lilygo
122
+ url = 'http://192.168.4.97/ait/Hi-AIT-123' # esp32 AiThinker
123
+
124
+ vid = cv2.VideoCapture(url) # open webcam capture
125
+
126
+ dropped = 0 # drop frames count
127
+ while True:
128
+ ret, frame = vid.read() # get frame-by-frame
129
+ if frame is not None:
130
+ if dropped > 0: dropped = 0 # reset
131
+ hands, frame = Hands.findHands(frame, draw=True, flipType=True)
132
+ # Check if any hands are detected
133
+ if hands:
134
+ # Information for the first hand detected
135
+ hand1 = hands[0] # Get the first hand detected
136
+ # lmList1 = hand1["lmList"] # List of 21 landmarks for the first hand
137
+ bbox1 = hand1["bbox"] # Bounding box around the first hand
138
+ # (x,y,w,h coordinates)
139
+ center1 = hand1['center'] # Center coordinates of the first hand
140
+ handType1 = hand1["type"] # Type of the first hand ("Left" or "Right")
141
+
142
+ # Count the number of fingers up for the first hand
143
+ # fingers1 = Hands.fingersUp(hand1)
144
+ # print(f'H1 = {fingers1.count(1)}', end=" ")
145
+
146
+ # Calculate distance between specific landmarks on the first hand
147
+ # and draw it on the image
148
+ # length, info, frame = Hands.findDistance(lmList1[8][0:2], lmList1[12][0:2], frame, color=(255, 0, 255), scale=10)
149
+
150
+ # Check if a second hand is detected
151
+ if len(hands) == 2:
152
+ # Information for the second hand
153
+ hand2 = hands[1]
154
+ # lmList2 = hand2["lmList"]
155
+ bbox2 = hand2["bbox"]
156
+ center2 = hand2['center']
157
+ handType2 = hand2["type"]
158
+
159
+ # Count the number of fingers up for the second hand
160
+ # fingers2 = Hands.fingersUp(hand2)
161
+ # print(f'H2 = {fingers2.count(1)}', end=" ")
162
+
163
+ # Calculate distance between the index fingers of both hands
164
+ # and draw it on the image
165
+ # length, info, frame = Hands.findDistance(lmList1[8][0:2], lmList2[8][0:2], frame, color=(255, 0, 0), scale=10)
166
+
167
+ # print(" ") # New line for better readability of the printed output
168
+ # show image
169
+ cv2.imshow('Hands',frame) # display frame
170
+ # define abort key
171
+ if cv2.waitKey(22) & 0xFF == ord('q'): # press q to quit
172
+ break
173
+ else:
174
+ dropped += 1
175
+ if dropped > 100:
176
+ print("Server is down")
177
+ break
178
+
179
+ # Done, clear all resources
180
+ vid.release()
181
+ cv2.destroyAllWindows()
182
+ print("Video stop")
183
+
Tech-dat/vision-dat/vision-dat.md
... ...
@@ -0,0 +1,60 @@
1
+
2
+# vision-dat
3
+
4
+
5
+## function
6
+
7
+- [[camera-dat]]
8
+- tracking
9
+- face-detection
10
+- object-detection
11
+- pose-estimation
12
+
13
+
14
+
15
+## projects
16
+
17
+Open source vision project:
18
+
19
+## 1. OpenCV (Open Source Computer Vision Library)
20
+- **Language**: C++, Python, Java
21
+- **Use Case**: Image processing, object detection, tracking, feature extraction.
22
+- **GitHub**: [https://github.com/opencv/opencv](https://github.com/opencv/opencv)
23
+- **Note**: The foundation of most vision projects; highly modular.
24
+
25
+---
26
+
27
+## 2. YOLO (You Only Look Once)
28
+- **Language**: Python, C++
29
+- **Use Case**: Real-time object detection.
30
+- **GitHub**: [https://github.com/ultralytics/yolov5](https://github.com/ultralytics/yolov5)
31
+- **Note**: Fast, widely used for real-time detection.
32
+
33
+
34
+- [[OPENCV-dat]] - [[OPENMV-dat]]
35
+
36
+
37
+| Feature / Aspect | **OpenMV** | **OpenCV** |
38
+| ------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
39
+| **Type** | Hardware + Firmware (microcontroller-based smart camera) | Software library (runs on PC, Raspberry Pi, etc.) |
40
+| **Main Goal** | Embedded **AI vision camera** for edge detection, color tracking, face/object recognition β€” all **onboard** | Comprehensive **computer vision library** for image/video processing, ML, and AI applications |
41
+| **Programming Language** | MicroPython (simplified for embedded use) | C++, Python, Java, etc. |
42
+| **Processing Power** | Runs on ARM Cortex-M (or H7) MCU – limited but real-time and low power | Depends on host system (CPU/GPU/TPU). Can handle deep learning, OpenCL, CUDA acceleration |
43
+| **AI / ML Capability** | Supports basic CNN models and TensorFlow Lite Micro | Supports **DNN module**, full TensorFlow / PyTorch integration, YOLO, OpenVINO, etc. |
44
+| **Ease of Use** | Plug-and-play, with OpenMV IDE and onboard camera | Requires manual setup and coding environment |
45
+| **Use Case Examples** | Line following robots, color blob tracking, face detection for IoT | Face recognition, motion tracking, object detection, SLAM, AR, advanced analytics |
46
+| **Hardware Integration** | Standalone camera module | Depends on external camera (USB, IP, CSI, etc.) |
47
+| **Community & Ecosystem** | Smaller but focused on robotics and IoT | Very large global developer and research community |
48
+| **Example Devices** | OpenMV Cam H7, OpenMV Cam RT1062, OpenMV PureThermal | Works with any PC, Raspberry Pi, NVIDIA Jetson, etc. |
49
+
50
+**Summary:**
51
+- 🧠 **OpenCV** is the *most advanced* and widely recognized **computer vision framework** for research, AI, and deep learning.
52
+- 🎯 **OpenMV** is a *self-contained smart camera project* designed for embedded systems and robotics β€” simpler but more practical for real-time low-power vision at the edge.
53
+
54
+
55
+
56
+
57
+
58
+## ref
59
+
60
+- [[sensor-Camera-dat]]
... ...
\ No newline at end of file