OpenCV에서 색 감지하면서 달리는 자동차 제작 (Rev # 1)
12204 단어 OpenCVRaspberry PI
겨우 1호기가 움직인 곳이므로, 프로그램이 전혀 세련되지 않은 곳은 용서해 주세요. 28호 정도로 AI카라고 불러도 좋은 정도의 레벨이 되어 있으면 좋다(^^;
할 수 있는 일
카메라에 비친 「붉은 색」의 영역을 쫓아 방향 전환을 하면서 전진합니다. "빨간색"을 찾을 수 없으면 중지합니다.
구성
프로그램 준비
우선 라이브러리 설치. OpenCV를 RaspberryPi에 넣을 때 기본 이미지는 "Desktop"을 선택하는 것이 원활합니다. "Lite"라면 추가 라이브러리가 필요할 수 있습니다. .
pip3 install --upgrade pip
pip3 install opencv-python
sudo apt -y install pimoroni
pimoroni-dashboard
pimoroni-dashboard는 메뉴 형식의 앱이므로 ExplorerPHAT를 찾아 드라이버와 샘플 프로그램을 설치합니다.
프로그램은 다음과 같습니다. 카메라에서 얻은 이미지를 HSV 색 공간으로 변환하고 색조가 빨간색 영역을 추출하고 그 중 가장 큰 면적을 가진 영역의 중심 좌표를 찾습니다. 좌우 모터의 속도를 조정하여 좌표 방향으로 방향타를 자릅니다. 일정 이상의 크기의 영역을 찾을 수 없을 때는 모터를 멈추고 있습니다.
cvcar.py
import time
import picamera
import picamera.array
import cv2
import numpy as np
import explorerhat
DEBUG = False
low = np.array([160,128,128])
high = np.array([200,255,255])
camera = picamera.PiCamera()
camera.resolution = (640,480)
camera.vflip = True
camera.hflip = True
camera.start_preview()
time.sleep(1)
camera.stop_preview()
r = explorerhat.motor.one
l = explorerhat.motor.two
def get_target():
global camera
stream = picamera.array.PiRGBArray(camera)
camera.capture(stream, format='bgr')
image = stream.array
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, low, high)
contours,_ = cv2.findContours(mask,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
cx, cy, max_a = -1,-1,0
for i in range(0,len(contours)):
if len(contours[i]) == 0: continue
x,y,w,h = cv2.boundingRect(contours[i])
a = cv2.contourArea(contours[i])
if a < 1000: continue
if a > max_a:
cx = x + w/2
cy = y + h/2
max_a = a
if DEBUG:
cv2.imshow("image",image)
cv2.imshow("debug",mask)
cv2.waitKey(0)
return (cx,cy)
w = camera.resolution[0]
while True:
x,y = get_target()
p = x/w if x > -1 else -1 # 0.0 - 1.0 or -1(not found)
print("%.1f" % (p))
if p == -1:
r.forward(0)
l.forward(0)
elif p > 0.6:
r.forward(70)
l.forward(20)
elif p < 0.4:
r.forward(20)
l.forward(70)
else:
r.forward(70)
l.forward(70)
time.sleep(0.1)
crontab에 쓰면 RaspberryPi가 켜지면 자동으로 실행됩니다 (스크립트는 $ HOME에 놓여 있다고 가정합니다).
@reboot python3 cvcar.py
TODO: 한번 더 설치를 처음부터 해본다(설명이 새는 라이브러리가 있을 것 같아?).
TODO: OpenCV에서 처리한 도중 경과의 이미지를 추가한다.
Reference
이 문제에 관하여(OpenCV에서 색 감지하면서 달리는 자동차 제작 (Rev # 1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lumbermill/items/162def7faff85ab71e3c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)