Add docs/research_ImageRecognition.md
parent
6dd413a85d
commit
df234f1d13
|
@ -0,0 +1,76 @@
|
||||||
|
### Coordination between Arduino and Image Recognition
|
||||||
|
|
||||||
|
#### Feasibility and Frameworks
|
||||||
|
- Integration between Arduino and image recognition is feasible.
|
||||||
|
- Various small cameras like OV7670 are compatible with Arduino.
|
||||||
|
- Available image processing libraries:
|
||||||
|
- OpenCV: Resource-intensive but widely used.
|
||||||
|
- Alternatives: Cameramatcs or Pixy2, tailored for microcontrollers.
|
||||||
|
- Object recognition:
|
||||||
|
- Pre-trained models or frameworks like TensorFlow Lite for Microcontrollers or EdgeImpulse suitable for microcontrollers.
|
||||||
|
|
||||||
|
#### Processing and Output
|
||||||
|
- Data processing on Arduino:
|
||||||
|
- Camera detects cards, sends raw data to Arduino.
|
||||||
|
- Arduino analyzes data and interprets recognized cards.
|
||||||
|
- Decision logic:
|
||||||
|
- Implementation of decision logic on Arduino defining actions.
|
||||||
|
- Possible speech output based on card recognition.
|
||||||
|
|
||||||
|
#### Energy Consumption
|
||||||
|
- Low power consumption or consistent power supply is desirable.
|
||||||
|
|
||||||
|
*Note*: Image processing on Arduino can be challenging due to limited resources and performance capabilities. Finding compromises may be necessary.
|
||||||
|
|
||||||
|
#### Frameworks
|
||||||
|
- TensorFlow Lite for Microcontrollers:
|
||||||
|
- Executes machine learning models on resource-constrained devices.
|
||||||
|
- Edge Impulse:
|
||||||
|
- Simplifies application development for microcontrollers, facilitates data collection, model training, and deployment.
|
||||||
|
- OpenMV:
|
||||||
|
- Platform for computer vision on microcontrollers, supports basic image processing tasks.
|
||||||
|
- Arduino Libraries:
|
||||||
|
- Example: Arduino Computer Vision Library.
|
||||||
|
|
||||||
|
#### Considerations
|
||||||
|
- Processing 10-15 playing cards simultaneously on Arduino can be challenging, considering resource limitations.
|
||||||
|
- Possibilities:
|
||||||
|
1. Algorithm optimization.
|
||||||
|
2. External processing unit.
|
||||||
|
3. Prototype and test.
|
||||||
|
|
||||||
|
#### Example Code Collection
|
||||||
|
##### Image Recognition with Color Detection (Arduino)
|
||||||
|
```cpp
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <Adafruit_Sensor.h>
|
||||||
|
#include <Adafruit_TCS34725.h>
|
||||||
|
|
||||||
|
#define RED_THRESHOLD 1000 // Threshold for red color detection
|
||||||
|
|
||||||
|
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
if (tcs.begin()) {
|
||||||
|
Serial.println("Color sensor found!");
|
||||||
|
} else {
|
||||||
|
Serial.println("Color sensor not found. Check connection.");
|
||||||
|
while (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
uint16_t clear, red, green, blue;
|
||||||
|
tcs.getRawData(&red, &green, &blue, &clear);
|
||||||
|
|
||||||
|
if (red > RED_THRESHOLD) {
|
||||||
|
Serial.println("Red color detected!");
|
||||||
|
// Further actions for the detected card can be implemented here
|
||||||
|
} else {
|
||||||
|
Serial.println("No red color detected.");
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(1000); // Delay between detection loops
|
||||||
|
}
|
Loading…
Reference in New Issue