신입 및 경력자를 위한 10가지 흥미로운 OpenCV 프로젝트 아이디어 및 주제 [2022]

게시 됨: 2021-05-27

OpenCV 또는 오픈 소스 컴퓨터 비전 라이브러리는 컴퓨터 비전 문제를 개발하고 해결하는 데 사용되는 강력한 머신 러닝 및 AI 기반 라이브러리입니다. 컴퓨터 비전에는 시각적 세계를 이해하고 이해하고, 요소를 식별하고, 딥 러닝 모델을 사용하여 이에 대응하도록 컴퓨터를 훈련하는 것이 포함됩니다. 오늘날 전 세계의 기업은 이미지 조작, 처리, 얼굴 감지, 음성 인식, 동작 추적 및 물체 감지에 이 기술을 활용합니다.

Google, Facebook, Microsoft 및 Intel과 같은 회사는 이미 OpenCV를 배포하여 컴퓨터 비전 응용 프로그램을 개발하고 있습니다. Mark Zuckerberg는 2015년 인터뷰 에서 "이미지의 내용을 이해할 수 있고 그 이미지를 볼 수 없는 시각 장애인에게 말할 수 있는 컴퓨터를 만들 수 있다면 그것도 꽤 놀라운 일입니다."라고 말했습니다.

오늘날 OpenCV 기술은 맹인 또는 시각 장애가 있는 개인을 위한 돌파구로 입증되었습니다. 낯선 환경에 익숙해지고 주변의 사물과 사람을 인식하여 시력 장애를 극복할 수 있습니다. 컴퓨터 비전은 또한 자율주행 자동차와 지능형 동작 센서 장치의 이면에 있는 기술입니다.

컴퓨터 비전 분야에서 경력을 쌓고 싶다면 실제 경험을 쌓는 데 도움이 되는 10가지 흥미로운 공개 이력서 프로젝트가 있습니다. 시작하겠습니다!

목차

2022년에 확인해야 할 상위 10개 공개 CV 프로젝트

프로젝트 1: EdgeML을 사용하여 폐렴 감지

이 OpenCV 프로젝트는 Raspberry Pi에 AI 기반 폐렴 감지 소프트웨어를 배포하는 것을 목표로 합니다. Edge Machine Learning 시스템을 사용하여 카메라가 있는 Raspberry Pi를 Balena의 다중 컨테이너를 사용하여 폐렴 분류기로 변환합니다.

Node.js 서버 내에서 Edge Impulse WebAssembly 추론 엔진을 실행하는 두 번째 컨테이너가 Balena에 추가됩니다. 두 컨테이너는 WebSocket을 통해 통신하여 BalenaCam이 웹 페이지에 있는 카메라의 피드를 매초 실시간 스트리밍할 수 있도록 합니다.

프로젝트에 사용된 소프트웨어 및 도구에는 OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code 및 Docker가 포함됩니다. Balena Cam을 지원하는 웹 브라우저는 Chrome, Safari, Firefox 및 Edge입니다.

여기 에서 프로젝트를 확인할 수 있습니다 .

프로젝트 2: Samsung SmartThings용 OpenCV 구동 모션 센서

먼저 이전에 OpenCV가 설치된 PiCam이 작동하는 Raspberry Pi 3가 필요합니다. 이 프로젝트는 컴퓨터 비전으로 구동되는 SmartThings용 맞춤형 모션 센서를 만들고 얼굴을 감지하는 것을 목표로 합니다. 수집된 데이터는 LAN을 통해 SmartThings(UPnP)로 전송됩니다.

이를 위해 SmartThings용 장치 처리기를 만들고 프로그래밍합니다. 그런 다음 Python 스크립트를 사용하여 카메라 이미지에 액세스하고 얼굴을 감지하고 SmartThings에서 검색할 Raspberry Pi를 페어링합니다. 또한 GitHub에서 소싱할 수 있는 imutils 를 설치해야 합니다 .

여기 에서 프로젝트의 소스 코드를 확인 하십시오 .

프로젝트 3: 컴퓨터 사진

이 프로젝트는 파노라마를 생성하고, 이미지에서 노이즈와 원치 않는 물체를 제거하고, 저조도에서 클릭한 사진의 가시성을 높이는 것입니다. 컴퓨터 사진에는 가우스 백색 잡음과 왜곡을 제거 하는 사진 노이즈 제거 알고리즘 , 선, 물체 및 원치 않는 요소를 필터링하는 사진 복원 , 문자를 인식하여 번호판을 감지하는 번호판 인식 이 포함됩니다.

프로젝트 4: OpenCV를 사용하여 이미지에 워터마크 만들기

이 프로젝트는 개방형 컴퓨터 비전 라이브러리를 사용하여 이미지에 워터마크(서명, 로고 또는 워터 스탬프를 만들어 저작권 침해 또는 오용을 방지하는 방법)를 만드는 방법에 대한 자습서입니다. Python의 OpenCV 라이브러리를 사용하여 이미지와 텍스트를 모두 사용하여 원본 이미지를 워터마크할 수 있습니다. 이미지를 이용하여 워터마크를 생성하기 위해서는 투명 함수와 이미지 추가 함수를 정의해야 합니다. 텍스트의 경우 PIL 함수를 가져온 다음 텍스트 워터마크 위치를 조정합니다.

여기 에서 프로젝트를 조회할 수 있습니다 .

프로젝트 5: 왈도 찾기

일련의 서로 다른 이미지에서 Waldo를 인식하도록 AI를 훈련하여 이미지에서 Waldo를 감지하는 객체 감지 프로젝트입니다. 그런 다음 픽셀 일치로 Waldo를 찾기 위해 정적 접근 방식을 사용합니다. 이것은 템플릿 이미지를 사용하는 경우 정적 일치가 Waldo의 새 이미지가 아닌 해당 특정 이미지에만 적용되기 때문에 중요합니다.

우리는 상관 계수를 계산하여 템플릿 매칭을 수행합니다. 템플릿 일치는 입력으로 Waldo 템플릿을 가져와 Waldo가 감지될 이미지에서 픽셀 단위로 슬라이드합니다. 상관 계수는 픽셀 위치가 "양호한" 또는 "나쁜" 일치 여부를 보여줍니다.

여기 에서 프로젝트를 확인할 수 있습니다 .

프로젝트 6: 자율주행 자동차

이 프로젝트는 자율주행 자동차를 만들기 위해 OpenCV를 사용하여 이미지 조작 및 처리를 사용합니다. 자동차가 스스로 운전하도록 훈련시키려면 도로 차선에 익숙해지고, 차선을 찾고, 차선을 유지하는 데 집중해야 합니다. 이는 머신 러닝 모델이 거리 차선을 나타내는 이미지에서 픽셀을 분리하기 위해 캐니 에지 감지 및 허프 라인 변환으로 관심 영역을 식별하는 전문 지식이 필요함을 의미합니다. 이것은 또한 평균 기울기 점을 마스킹하고 계산해야 합니다.

관심 영역을 식별하기 위한 소스 코드는 다음과 같습니다.

numpy를 np로 가져오기

matplotlib에서 pyplot을 plt로 가져오기

이미지 = cv2.imread('../../images/input.jpg')

[8]에서:

이미지.모양

아웃[8]:

(830, 1245, 3)

[11]에서:

x, y = 이미지.모양[:2]

[3]에서:

높이, 너비 = image.shape[:2]

# 시작 픽셀 좌표를 얻으려면(자르기 사각형의 왼쪽 상단)

start_row, start_col = int(높이 * .25), int(너비 * .25)

# 끝 픽셀 좌표를 얻으려면(오른쪽 아래)

end_row, end_col = int(높이 * .75), int(너비 * .75)

# 인덱싱을 사용하여 원하는 이미지 섹션 자르기

자른 = 이미지[start_row:end_row , start_col:end_col]

[6]에서:

행, 열 = 1, 2

무화과, axs = plt.subplots(행, 열, 무화과 크기=(15, 10))

fig.tight_layout()

axs[0].imshow(cv2.cvtColor(이미지, cv2.COLOR_BGR2RGB))

axs[0].set_title('원본 이미지')

cv2.imwrite('original_image.png', 이미지)

axs[1].imshow(cv2.cvtColor(자르기, cv2.COLOR_BGR2RGB))

axs[1].set_title('잘린 이미지')

cv2.imwrite('cropped_image.png', 잘림)

plt.show()

여기 에서 프로젝트를 확인 하십시오 .

프로젝트 7: 시각 장애인을 위한 얼굴 및 음성 인식

이 프로젝트는 Raspberry Pi 2 Model B와 Raspberry Pi 카메라 모듈을 사용하여 얼굴 입력을 음성 출력으로 변환하여 시각 장애인을 돕는 것을 목표로 합니다. 2022년 가장 인기 있는 공개 이력서 프로젝트 중 하나입니다. 이 소프트웨어를 사용하면 시각 장애인 또는 시각 장애가 있는 사람들이 낯선 환경에서 표지판, 텍스트 또는 사람들을 감지하고 도움 없이 길을 탐색할 수 있습니다. 프로젝트의 다른 요구 사항 중에는 얼굴 인식을 수행하기 위한 OpenCV 및 Python이 있으며 GNU Octave를 사용하여 음성 인식이 이루어집니다.

여기 에서 코드를 확인할 수 있습니다 .

프로젝트 8: 스마트 출석 모델

스마트 출석 시스템은 ZoomApp과 같은 온라인 교육 모델을 위한 편리한 도구입니다. 실시간으로 출석을 모니터링하여 Zoom 수업에 참석하는 학생을 추적하는 데 도움이 됩니다. 날짜가 포함된 학생의 스크린샷을 가져와 엑셀 파일에 업로드하기만 하면 됩니다.

이 공개 이력서 프로젝트에 대한 자습서는 여기에서 찾을 수 있습니다 .

프로젝트 9: OpenCV로 얼굴 바꾸기

얼굴 교환 응용 프로그램과 필터는 얼마 전부터 소셜 미디어에서 인기를 얻고 있습니다. 젊고 나이든 것처럼 보이는 것부터 정지 이미지를 움직이는 이미지로 변환하는 것까지, Instagram, Snapchat, FaceApp과 같은 사람들은 모두 대세를 뛰어 넘었습니다. 얼굴 교환 앱은 OpenCV와 Python을 사용하여 비교적 쉽게 만들 수 있습니다.

단계에는 dlib 랜드마크 감지기를 사용하여 형성된 삼각형을 사용하여 대상 이미지에 소스 이미지를 배치하는 단계가 포함됩니다.

여기 에서 프로젝트를 확인 하십시오 .

프로젝트 10: 윤곽 감지 및 모양 계산

프로젝트는 주어진 모양의 윤곽이나 윤곽을 감지하여 개체의 모양 유형을 결정합니다. 예를 들어 그림에 병뚜껑이 있는 경우 둥근 모양을 사용하여 이미지에 병뚜껑이 몇 개 있는지 확인할 수 있습니다.

이를 위한 소스 코드다음과 같습니다 .

numpy를 np로 가져오기

matplotlib에서 pyplot을 plt로 가져오기

[2]에서:

이미지 = cv2.imread('../../images/bottlecaps.jpg')

회색 = cv2.cvtColor(이미지, cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(회색, cv2.COLOR_BGR2RGB))

plt.title('병뚜껑'); plt.show()

cv2.imwrite('bottlecaps_input.jpg', 회색)

아웃[2]:

진실

[3]에서:

흐림 = cv2.medianBlur(회색, 5)

원 = cv2.HoughCircles(흐림, cv2.HOUGH_GRADIENT, 1.5, 10)

circles[0,:]의 i에 대해:

# 바깥쪽 원을 그린다

cv2.circle(이미지,(i[0], i[1]), i[2], (255, 0, 0), 2)

# 원의 중심을 그립니다.

cv2.circle(이미지, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(이미지, cv2.COLOR_BGR2RGB))

plt.title('감지된 원'); plt.show()

cv2.imwrite('detected_circles.jpg', 이미지)

아웃[3]:

진실

입력 [ ]:

반면에 모양을 세는 것은 이미지를 분할하고 데이터를 클러스터링하여 이미지의 관심 지점을 결정하는 알고리즘을 적용하는 것과 관련이 있습니다. approxPolyDP 함수의 도움으로 이진 및 근사 등고선을 사용합니다.

여기 에서 이 공개 이력서 프로젝트를 확인할 수 있습니다 .

마지막 생각들

Computer Vision을 사용하면 이미지 변환, 번역, 윤곽 감지, 이미지 분할, 객체 감지, 객체 추적 및 동작 분석과 같은 다양한 유용한 응용 프로그램을 개발할 수 있습니다.

또한 얼굴을 찾고 모양을 감지하는 등의 방법을 학습하여 물체와 얼굴을 인식함으로써 증강 현실(AR)에 사용됩니다. 신용 카드 판독기, 필기 숫자 감지기 또는 얼굴 판독기와 같은 간단한 기계 학습을 사용하여 흥미로운 Open CV 프로젝트를 만들 수도 있습니다.

그러나 이를 위해서는 데이터 과학과 머신 러닝, 특히 딥 러닝에 대한 이해가 필요합니다. ML 엔지니어, 데이터 과학자 또는 딥 러닝 엔지니어로 경력을 쌓고 싶다면 기계 학습 및 딥 러닝 고급 인증 프로그램을 취득하는 것이 좋습니다 .

이 과정은 통계, 회귀, 클러스터링 알고리즘, 신경망, 객체 감지 및 제스처 인식의 개념에 정통하도록 도와줍니다. 뿐만 아니라 OpenCV, Python, TensorFlow, MySQL, Keras, Excel, NumPy 등의 다른 프로그래밍 도구 및 라이브러리에 대한 전문 지식을 구축하고 군중에서 눈에 띄는 데 도움이 됩니다.

OpenCV란 무엇입니까?

OpenCV는 Intel에서 유지 관리하고 현재 개발자 커뮤니티에서 지원하는 이미지 처리 및 컴퓨터 비전용 오픈 소스 라이브러리입니다. 오픈 소스이기 때문에 OpenCV는 전체 개발자 커뮤니티의 힘을 활용합니다. 라이브러리는 객체 인식, 비디오 감시, 인간-기계 상호 작용, 의료 및 기타 관련 분야와 같은 실시간 응용 프로그램에 최적화되도록 설계되었습니다.

물체 감지란 무엇입니까?

물체 감지는 감지하기 쉽지 않은 이미지 또는 비디오에서 물체를 찾는 프로세스입니다. 이 문제는 일반적으로 분류의 인스턴스로 공식화됩니다. 이미지가 주어지면 우리는 위치를 알려주는 경계 상자와 함께 다양한 개체(예: 자동차, 보행자 및 건물)를 분류하려고 합니다. 물체 감지는 이미지에서 물체를 식별하는 작업입니다. 물체 감지의 목표는 이미지에서 물체의 위치를 ​​찾고(위치 찾기) 물체의 크기와 모양을 추정하는 것입니다. 물체 감지는 물체가 종종 부분적으로 가려지고 때로는 이미지의 비강체 변형뿐만 아니라 엄청나게 다양한 모양을 갖기 때문에 어려운 문제입니다.

가장 정확한 물체 감지 알고리즘은 무엇입니까?

많은 물체 감지 알고리즘이 있지만 그 중 어느 것도 100% 정확하지는 않습니다. 객체 감지 알고리즘은 데이터 과적합 문제에 직면합니다. 사실, 일부 컴퓨터 비전 연구자들은 물체 감지 알고리즘이 100% 정확할 수 없다고 주장합니다. 그러나 주어진 데이터 세트에 대해 정확한 결과를 제공하는 많은 알고리즘이 있습니다. GPU 머신을 사용할 여유가 있다면 객체 감지를 위해 OpenCV 기반 SVM 구현을 사용하는 것이 좋습니다. 매우 정확하고 빠르며 매우 큰 데이터 세트에서 작동합니다. 그러나 폐색을 잘 처리하지 못합니다. 얼굴 감지기를 구축하려면 OpenCV에서 Haar 캐스케이드 분류기 구현으로 이동하십시오.