OpenMV Cam 완벽 기술 가이드: 스마트 비전 카메라의 모든 것
스마트 비전 카메라는 내장 이미지 센서로 이미지를 캡처해 정밀 전기 정보를 얻고, 디지털 이미지 필터 기반으로 이벤트 설명을 생성하고 의사결정을 내리는 비전 시스템입니다. OpenMV Cam이 그 대표적인 예로, 통신 인터페이스, I/O 라인, 저렴한 비용 덕분에 지능형 비전 카메라로 자격 갖춥니다.
카메라 시스템에 대해 자세히 알아보겠습니다.
OpenMV란?
OpenMV Cam 프로젝트는 머신 비전을 학습자에게 저비용, 오픈소스, 사용자 친화적 플랫폼으로 제공합니다.
OpenMV Cam
주로 Python3로 프로그래밍하며 광범위한 이미지 처리와 머신러닝 기능을 제공:
- GIF 및 MJPEG 비디오 녹화
- AprilTags 감지
- QR/바코드 디코딩
(QR 및 바코드)
- 색상 추적 (Color Tracking)
- 키포인트 디스크립터 (Keypoints Descriptors)
- 얼굴 인식 (Face Detection)
Qt Creator 기반 OpenMV IDE(크로스 플랫폼)로 프로그래머블 카메라 강화. OpenMV IDE 동작:
- 카메라 프레임 버퍼 실시간 뷰
- 센서 제어 접근
- BLE/Wi-Fi/USB 시리얼로 스크립트 업로드
이미지 처리 도구로 키포인트, 임계값, 태그 등 생성 지원.
OpenMV Cam 상세
OpenMV 초광각 렌즈
정의
OpenMV Camera는 MicroPython으로 프로그래밍 가능한 강력한 마이크로컨트롤러 보드 탑재 카메라입니다.
OpenMV Cam 기능
- 카메라에서 머신 비전 알고리즘 실행으로 얼굴 감지, 색상 추적 등 수행
- 임베디드 기능으로 실세계 I/O 핀 제어 용이. I/O 핀 제어는 머신 비전 알고리즘 실행 트리거나 외부 이벤트 기반 사진/비디오 촬영에 활용
- C/C++ 대신 고수준 MicroPython 스크립트로 프로그래밍 → 고수준 데이터 구조와 머신 비전 알고리즘의 정교한 출력 쉽게 다룸
OpenMV Cam M7
정의
OpenMV Cam M7도 머신 비전 애플리케이션을 실세계에 구현하는 저전력 소형 마이크로컨트롤러 보드입니다.
OpenMV Cam M7 기능
OpenMV 지능형 M7 Cam 비전 카메라는 OpenMV Cam과 유사하게 색상 감지, 얼굴 추적 등 수행.
OpenMV Cam 주요 특징 (Cortex-M7 프로세서 기준)
- 12비트 DAC 모드 및 12비트 ADC
- 고출력 850nm IR LED 2개 + RGB LED 1개
- I/O 핀 10개 (PWM/인터럽트 지원, 서보 제어용 3개). SPI 버스 최대 54Mbps로 이미지 데이터 스트리밍 용이
- I/O 핀 출력 3.3V (5V 내성 없음)
- 216MHz 클럭, 외부 플래시 2MB, RAM 512KB
- 이미지 센서(OV7725): 320×240 16비트 또는 640×480 8비트 그레이스케일, 30FPS
- 비동기 시리얼 버스(TX/RX), CAN 버스, I2C 버스로 타 센서/마이크로컨트롤러와 인터페이스
- 표준 M12 렌즈 마운트(2.8mm 렌즈), 마이크로SD 카드 소켓(100Mbps 읽기/쓰기). 전문 렌즈 추가 구매 후 장착 가능
- 풀스피드(12Mbps) USB로 컴퓨터 인터페이스. 연결 시 USB 플래시 드라이브 + 가상 COM 포트로 인식
인터페이스 라이브러리
OpenMV는 내장 RPC(Remote Python/Procedure Call) 라이브러리로 카메라를 타 디바이스(아두이노, 라즈베리 파이 같은 마이크로컨트롤러, SBC, 컴퓨터)와 연결 지원.
RPC 라이브러리 동작 방식
다음 인터페이스 지원:
- Wi-Fi (Wi-Fi 실드 경유) 최대 12Mbps
- USB 가상 COM 포트(VCP) 최대 12Mbps
- CAN 버스 최대 1Mbps
- SPI 버스 최대 54Mbps (짧은 와이어 시 40/80Mbps 가능)
- I2C 버스 = 1Mbps (풀업 저항 사용 시)
- UART (비동기 시리얼) = 7.5Mbps
RPC 라이브러리로 JPG/RAW 이미지 데이터 스트리밍, 이미지 처리 결과 수신 용이. 저수준 하드웨어 제어(모터 드라이빙 등) 시 OpenMV로 별도 마이크로컨트롤러 제어 가능.
OpenMV에서 제공하는 아래 라이브러리 중 선택해 타 시스템과 인터페이싱:
아두이노 인터페이스 라이브러리 (I2C, UART, SPI, CAN 통신용)
특징:
- CAN 지원: ESP32 CAN 페리퍼럴 또는 MCP2515(SPI 경유)
- 모든 아두이노 변형에서 작동
범용 파이썬 인터페이스 (SPI/I2C, Kvaser CAN, UART, 이더넷/Wi-Fi, USB VCP 통신용)
리눅스(비글본/라즈베리파이), 맥, 윈도우 컴퓨터와 OpenMV 카메라 연결 파이썬 코드 제공.
BeagleBone
기타 지원:
- 리눅스 SBC(비글본/라즈베리파이)에서 SPI/I2C
- 리눅스/윈도우에서 Kvaser CAN
- 전 시스템에서 Wi-Fi/이더넷
- 전 시스템에서 USB VCP (USB가 OpenMV Cam에 직접 연결)
- 전 시스템에서 TTL/RS485/RS422/RS232 UART
시리얼 포트 주의사항
아래 코드로 OpenMV Cam VCP를 열고 시리얼 포트 텍스트 라인 읽기 가능.
리눅스, 맥, 윈도우에서 동작. 포트 이름을 USB VCP 포트 이름과 일치하도록 변경. 캠 표시는 리눅스/맥에서 /dev/로 나타남.
참고:
다른 언어/시리얼 라이브러리로 USB VCP 포트 열 때 DTR 라인을 false로 설정 필수. 안 하면 OpenMV Cam이 출력 버퍼를 압도할 수 있음.
응용 분야
- 선/에지 검출 (Line/Edge Detection)
- 프레임 차분 (Frame Differencing)
- 비디오 녹화
- AprilTag 추적
- 멀티 블롭 색상 추적 (다양한 색상 범위의 컬러 마커 생성)
- 이미지 캡처
- 템플릿 매칭
- 형상 감지 (사각형 등)
- 원 검출 (Circle Detection)
- 선형 바코드 디코딩
- 데이터 매트릭스 감지/디코딩
- QR 코드 감지/디코딩
- 광학 흐름 (Optical Flow)
- TensorFlow Lite 모델 (마이크로컨트롤러 지원)
- 아이 트래킹 (Eye Tracking)
- 얼굴 감지 (Face Detection)
(얼굴 감지 및 인식)
결론
OpenMV는 얼굴 감지, RAW 비디오 녹화, 색상 코드 감지 등 머신 비전 기능을 구현합니다. 뛰어난 기능 덕분에 폭넓은 응용 분야를 가집니다.
스마트 비전 카메라, 특히 OpenMV Cam에 대해 더 알고 싶으시면 주저 말고 연락 주세요.