본문 바로가기
project/2020.12-02 (라즈베리파이) 눈으로운전하는휠체어

Eye motion tracking – Opencv 3 with Python 라즈베리파이

by sj0020 2021. 1. 16.

라즈베리파이4에 OpenCV 3.4.3 설치 후 python3으로 라즈베리파이4에서 실행 했을 때  잘 됨.

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    
    roi = frame[269: 795, 537: 1416]
    rows, cols, _ = roi.shape
    
    gray_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    gray_roi = cv2.GaussianBlur(gray_roi, (7,7), 0)
    
    _, threshold = cv2.threshold(gray_roi, 5, 255, cv2.THRESH_BINARY_INV)
    _, contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    contours = sorted(contours, key=lambda x: cv2.contourArea(x), reverse=True)
    
    for cnt in contours:
        (x,y,w,h) = cv2.boundingRect(cnt)
        cv2.rectangle(roi, (x,y), (x+w, y+h), (255, 0, 0), 2)
        cv2.line(roi, (x+int(w/2), 0), (x+int(w/2), rows), (0, 255, 0), 2)
        cv2.line(roi, (0, y+int(h/2), (cols, y+int(h/2)), (0,255,0), 2)
        #cv2.drawContours(roi, [cnt], -1, (0,0,255),3)
        break
    
    cv2.imshow("Threshold", threshold)
    cv2.imshow("gray roi", gray_roi)
    cv2.imshow("Roi", roi)
    key = cv2.waitKey(30)
    if key == 27:
        break
        
cv2.destroyAllWindows()

 

https://wiserloner.tistory.com/1099

 

시선 탐지(Eye motion tracking) OpenCV with Python 코드 리뷰 - 머신러닝 x, 밝기 조절과 contour 사용

- 출처는 https://www.youtube.com/watch?v=kbdbZFT9NQI&t=155s입니다. - 파이썬 OpenCV를 사용하며, 눈동자의 위치를 탐지해서, 눈의 움직임, 시선을 구할수 있습니다. - 개발 과정 1. 파이썬과 openCV는 각각 설..

wiserloner.tistory.com

https://www.youtube.com/watch?v=kbdbZFT9NQI&t=155s

https://pysource.com/2019/01/04/eye-motion-tracking-opencv-with-python/

 

Eye motion tracking - Opencv with Python - Pysource

We’re going to learn in this tutorial how to track the movement of the eye using Opencv and Python. Studying the eye Before getting into details about image processing, let’s study a bit the eye and let’s think what are the possible solutions to do..

pysource.com

 _, contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

여기서 안된다ㅠ

-> 위의 코드는 opencv3 기준으로 작성되었는데 나는 opencv4에 위의 코드를 넣었으니 안됐음. 댓글보니 contours 부분을 수정해보라고 수정하면 된다고 해서 했는데 mask 어쩌구 오류 뜨면서 안됨,

그래서 결국 opencv3을 깔아본다..

더보기

Leo September 20, 2019 at 11:13 am

It seems the problem is the way findContours returns data depending on the installed version.
Try changing from:
_, contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
To:
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

And it should work.

 Reply

 

 

      1.  

 

 

 

roi를 저렇게 설정해주면 기존 화면 영역(검은 테두리) 에서 붉은 테두리 로 크롭되어  조정이 된다.

 

contours

https://m.blog.naver.com/samsjang/220516697251

 

[17편] 이미지 Contour

이미지 프로세싱 & 컴퓨터 비전OpenCV-Python 강좌 17편 : 이미지 Contour 맛보기 필요환경: 파이...

blog.naver.com