본문 바로가기
프로젝트/자율주행자동차

자율주행자동차 만들기 xcode ESP32 cam c++ opencv - 영상획득

by 빈이쥬 2023. 1. 13.

opencv 자율주행 알고리즘

OpenCV를 사용한 자율 주행에 일반적으로 사용되는 일부 알고리즘 및 기술은 다음과 같다

  • 차선 감지: 여기에는 도로의 가장자리를 감지하고  차선을 식별
  • 객체 감지: 여기에는 다른 차량, 보행자 및 교통 표지판과 같은 차량 환경의 객체 감지 및 식별
  • 이미지 처리

차선감지 알고리즘

자율 주행 알고리즘에서 OpenCV를 사용하여 차선을 감지하는 순서는 일반적으로 다음 단계로 구분된다

  1. 이미지 획득: 알고리즘은 차량의 카메라에서 전방 도로의 이미지를 캡처
  2. 이미지 전처리: 이미지를 전처리하여 노이즈를 제거하고 밝기를 조정하며 가장자리를 향상시키며, 이 단계에는 가우시안 블러링(Gaussian blurring), 임계값(thresholding) 및 에지 감지(edge ​​detection)와 같은 기술이 활용됨 
  3. 차선 감지: 알고리즘은 Hough 라인 변환, 확률적 Hough 라인 변환 또는 RANSAC과 같은 기술을 사용하여 도로의 가장자리를 감지하고 차선을 식별한다.
  4. 차선 곡률 계산: 알고리즘은 감지된 차선의 곡률을 계산한다.
  5. 차선 추적: 알고리즘은 시간이 지남에 따라 감지된 차선을 추적하여 차량이 차선 내에 있도록 한다.
  6. 차선 예측: 알고리즘은 이전 감지를 기반으로 차선의 미래 위치를 예측한다
  7. 차선 안내: 알고리즘은 감지되고 예측된 차선 위치를 기반으로 스티어링, 스로틀 및 제동 시스템에 제어 명령을 한다.

 

1. 이미지 획득

esp32 camera의 스트리밍 영상을 이미지로 획득한다.

 

ESP32-cam 소스 구현 

esp32 camera 예제를 기반으로 필요없는 부분을 제외하여 소스를 구현하였다.

 

 

Xcode에 c++ 환경설정

https://program-s.tistory.com/40

 

맥OS Xcode OpenCV 설정[C++]

HomeBrew 설치 https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 터미널 실행 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 입력 하면 HomeBrew가 설치된

program-s.tistory.com

 

ESP32 Cam에서 스트리밍 되는 영상을 불러오는 소스 구현

https://program-s.tistory.com/43

 

OPENCV C++ 스트리밍 영상 출력하기

esp32 cam 영상 출력 소스는 아래를 참고하자. 최종 소스 - ESP32 CAM의 영상을 출력 #include #include using namespace cv; using namespace std; int main(int argc, char* argv[]) { string url = "http://192.168.0.104"; // Open the default c

program-s.tistory.com

 

원격으로 ESP32를 제어하기 위한 C++ 소스 구현

cURL을 이용하여 구현하였고 esp32에서 데이터 수신을 확인함

https://program-s.tistory.com/44?category=1072720 

 

xcode c++ cURL 사용법

cURL C, C++, Python 및 PHP와 같은 다양한 프로그래밍 언어로 HTTP 요청을 할 수 있도록 하는 라이브러리이다. HTTP, HTTPS, FTP 및 LDAP와 같은 다양한 프로토콜을 지원하며 개발자가 JSON, XML 및 CSV를 비롯한

program-s.tistory.com

 

 

 

 

'프로젝트 > 자율주행자동차' 카테고리의 다른 글

자율주행자동차 기초  (0) 2021.06.09