상세 컨텐츠

본문 제목

우분투 리눅스 OpenCV python 웹캠 프로그래밍

Programming

by 신농해태 2021. 8. 10. 09:36

본문

반응형

OpenCV = Opensource + Computer Vision + 라이브러리 로서 영상처리 프로그래밍을 할 때 필수 라이브러리입니다. C++버전과 Python 버전이 있습니다. 

 

USB 웹캠을 이용하는 프로그래밍을 진행할 것입니다. 윈도우가 설치된 PC에 USB 웹캠을 연결한후, 왼쪽 아래의 검색을 클릭하여 카메라를 입력 엔터후, 카메라앱을 실행하여, 웹캠을 촬영하는 것이 실시간으로 PC 모니터에 보여지는지 확인한 후, 잘 보여지면 사용이 가능 USB 웹캠입니다.

 

우분투 리눅스가 설치된 PC에 Visual Studio code를 실행한 후, Visual Studio code 아래의 터미널창에

pip install opencv-python을 입력 엔터하여 OpenCV를 설치합니다. 

새파일을 만들고 opencv1.py 등으로 파일명을 저장후, 아래와 같이 코딩을 합니다. 

 

import cv2

 

capture = cv2.VideoCapture(2)       #노트북 내장 웹캠은 0, USB웹캠은 2로 하면 연결되었음.

capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

capture.set(cv2.CAP_PROP_FRAME_HEIGHT,480)

 

while True:

ret, frame= capture.read()

cv2.imshow("original", frame)

if cv2.waitKey(1) == ord('q'):          #웹캠 프로그램을 종료할때는 키보드 q를 누름.

break

 

capture.release()

cv2.destroyAllWindows()

 

 

오른쪽 위의 실행 버튼을 누르면, 웹캠이 동작하고 모니터로 영상이 출력됨을 확인할 수 있습니다. 

 

영상 필터 사용에 대한 코드 입니다.

import cv2

import numpy as np

 

capture = cv2.VideoCapture(2)

capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

capture.set(cv2.CAP_PROP_FRAME_HEIGHT,480)

 

while True:

   ret, frame= capture.read()

 

   noise = np.uint8(np.random.normal(loc=0, scale=0.4, size=[480, 640,3]))

   noise_img = cv2.add(frame, noise)

   median_filter = cv2.medianBlur(noise_img,5)

 

   cv2.imshow("original", frame)

   cv2.imshow("noised",noise_img)

   cv2.imshow("median", median_filter)

   if cv2.waitKey(1) == ord('q'):

   break

 

capture.release()

cv2.destroyAllWindows()

 

 

화면에 글자를 넣을 수도 있습니다. 관련된 라이브러리를 설치하기 위해서 Visual Studio code 터미널창에서 

pip install pillow 입력 엔터 설치하고, 편집창에 코딩을 합니다. 

 

import cv2

import datetime

from PIL import ImageFont, ImageDraw, Image

import numpy as np

 

capture = cv2.VideoCapture(2)

capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

 

font = ImageFont.truetype('fonts/SCDream6.otf', 20)

 

while True:

now = datetime.datetime.now()

nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')

 

ret, frame = capture.read()

 

cv2.rectangle(img=frame, pt1=(10, 15), pt2=(340, 35), color=(0,0,0), thickness=-1)

 

frame = Image.fromarray(frame)

draw = ImageDraw.Draw(frame)

draw.text(xy=(10, 15), text="HAETAE OFFICE "+nowDatetime, font=font, fill=(255, 255, 255))

frame = np.array(frame)

 

cv2.imshow("text", frame

if cv2.waitKey(1) == ord('q'): 

break

 

capture.release() 

cv2.destroyAllWindows() 

 

 

 

우분투 서버가 설치된 라즈베리파이에도 웹캠을 연결한 후, Visual Studio code로 원격 접속 후, 위와 같이 진행하였으나, 동작하지 않았으므로, 차후 방법을 알아보겠습니다. 

728x90
LIST

관련글 더보기

댓글 영역