이번시간에는 카메라에 대한 내용을 담아보겠습니다!
우리는 카메라를 통해서 많은 것을 할 수 있습니다.
기본적으로, 보는 것.
즉, 카메라를 통해서 눈으로 보는 것과 같이 현상을 담을 수 있는데요. 이에 더해 실시간으로 카메라로 들어오는 화면을 이미지로 저장해서 다양한 처리를 통해서 다양한 기능을 실행해 볼 수 있습니다.
자율주행에서도 마찬가지죠! 카메라의 이미지를 처리해서 트랙을 따로 분리해서 자율주행 차량의 학습파일을 만드는데 사용할 수도 있습니다.
이를 라즈베리파이 카메라, 'picam'을 통해서 진행해보겠습니다!
파이카메라
파이카메라는 이렇게 생긴 카메라 모듈입니다.
파이 카메라 모듈은 라즈베리 파이를 지원하는 휴대용 경량 카메라입니다. MIPI 카메라 직렬 인터페이스 프로토콜을 사용하여 Pi와 통신하고, 일반적으로 이미지 처리, 기계 학습 또는 감시 프로젝트에 사용됩니다.
장착은 이렇게 라즈베리파이 본체에 있는 저 부분의 소켓을 열고 하얀 필름을 집어넣어서 닫아주면 끝입니다!
간단합니다.
사용전 설정
그리고 새로운 모듈을 사용하니, 사용하도록 환경설정을 해주어야 하는데요.
위와같이 터미널창에서 sudo raspi-config 로 환경 설정을 들어가서 camera를 enable해주어도 되고,
위와 같이 라즈베리파이 > preference > Raspberry Pi Configuration의 Interfaces 탭을 들어가서 camera를 enable해주시면 카메라의 사용 준비는 끝납니다!
테스트
이제 카메라가 나오는지 테스트를 해보겠습니다.
보통 제가 처음에 환경설정을 하셨던 내용을 똑같이 따라하셨으면 위와같이 sound & Video탭에 cheese라는 프로그램이 있을 텐데요. 이 프로그램을 실행해 줍시다!
그럼 위와같이 카메라의 화면이 정상적으로 출력될 것입니다!
만약 위와같이 카메라를 enable했는데, 화면이 출력되지 않는다.
1. 파이카메라는 새로 구매하면 검은색 덮개가 있는데, 그것을 빼주지 않았다.
2. 카메라가 불량품이다.
라고 생각해주시면 될거 같습니다..
OpenCV
자 이제, 카메라의 송출은 저 cheese라는 프로그램으로 하지않고, 동영상의 이미지 처리, 편집을 하기위해서 OpenCV를 사용할 겁니다.
OpenCV는 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리입니다. 실시간 이미지 프로세싱에 중점을 둔 라이브러리입니다. 이 라이브러리는 물체인식, 안면인식, 제스쳐 그리고 딥러닝과 같은 분야에서 사용되고 있습니다.
그래서 OpenCV을 사용하기위해 몇가지 패키지들을 설치해주겠습니다.
터미널창에서 아래의 명령어를 실행합니다.
pip3 install opencv-python==4.5.1.48
그냥 pip3 install opencv-python을 사용하셔도 되지만, 패키지들간에 버전이 다르면 설치했음에도, OpenCV가 설치되지 않았다는 오류가 발생할 수 있으니. 혹여나 따라하신다면 저와같은 4.5.1.48로 설치해주시는게 좋아요!
그리고 이에 몇가지 패키지들을 미리 설치해주겠습니다.
pip3 install numpy==1.20.2
sudo apt-get install libhdf5-dev -y
sudo apt-get install libhdf5-serial-dev -y
sudo apt-get install libatlas-base-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libqtgui4 -y
sudo apt-get install libqt4-test -y
OpenCV 테스트
이제 설치를 마쳤으니, OpenCV로도 동영상이 정상적으로 열리는지 확인해보겠습니다.
평소와 같이 코딩은 Thonny Python IDE를 이용합니다.
실행과 정지, 결과보는 것이 제일 편해서 사용합니다.
import cv2 #OpenCV를 사용하기위해 import해줍니다.
def main():
camera = cv2.VideoCapture(-1) #카메라를 비디오 입력으로 사용. -1은 기본설정이라는 뜻
camera.set(3,640) #띄울 동영상의 가로사이즈 640픽셀
camera.set(4,480) #세로사이즈 480픽셀
while( camera.isOpened() ): #카메라가 Open되어 있다면,
_, image = camera.read() ##비디오의 한 프레임씩 읽습니다. _값이 True, 실패하면 False, image에 읽은 프레임이 나옴
image = cv2.flip(image,-1) #카메라 이미지를 flip, 뒤집습니다. -1은 180도 뒤집는다는 뜻입니다.
cv2.imshow( 'camera test' , image) #카메라를 'camera test'라는 이름의 파일로 보여줍니다.
if cv2.waitKey(1) == ord('q'): #만약 q라는 키보드값을 읽으면 종료합니다.
break
cv2.destroyAllWindows() #이후 openCV창을 종료합니다.
if __name__ == '__main__':
main()
위의 코드를 테스트로 사용합니다.
640:480의 사이즈로 동영상을 'camera test'라는 이름으로 송출할겁니다.
근데, 모든 카메라가 이러는지는 모르겠는데, 저의 파이카메라는 정상적으로 착용을 하고 동영상을 송출하면,
180도 뒤집혀 있어서, image = cv2.flip(image,-1) 명령어를 통해서 뒤집어서 송출하도록 조정해주었습니다.
만약 정상적으로 나오면 저 부분은 삭제하셔도 됩니다.
이렇게 카메라창이 실시간으로 나오면 성공입니다.
만약 여기서 error: opencv 4...어쩌구 저쩌구가 뜨면서 OpenCV가 설치되지 않았다고 하면, 위에서 제가 말한 OpenCV와 Python간의 버전문제로 인식을 못하는 것 같은 모습을 보여줍니다.
자신의 버전에 맞게 잘 설치를 해주세요!
흠... 일단은 이번 포스팅은 여기까지 하겠습니다.
카메라파트는 OpenCV의 명령어가 매우 많아서 한번에 다 올리면 스크롤 내리시다가 너무 길어서 다 나가실거 같습니다. OpenCV를 이용한 카메라 사용 2로 금방 올리겠습니다! 빠잉!
AI 인공지능 자율주행 자동차
#해당 프로젝트는 앤써북의 'AI 인공지능 자율주행 자동차' 를 참고하고 있습니다!
https://book.naver.com/bookdb/book_detail.naver?bid=20861845
'AutoDriving > AutoDriving RC_Car' 카테고리의 다른 글
자율주행 차량 만들기 -완 (라즈베리파이 + OpenCV) 2022 (10) | 2023.02.21 |
---|---|
라즈베리파이 자율주행 자동차 - (7) OpenCV를 이용한 카메라 사용 2 [이미지처리] (0) | 2022.05.18 |
라즈베리파이 자율주행 자동차 - (5) 블루투스를 사용해보자! (0) | 2022.04.22 |
라즈베리파이 자율주행 자동차 - (4) 부저와 모터를 움직여보자! (0) | 2022.03.08 |
라즈베리파이 자율주행 자동차 - (3) LED, 버튼 테스트 (0) | 2022.03.06 |