e6a2689a6a1ca7cce663403d73d287cc9c0bb994
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 |