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로 원격 접속 후, 위와 같이 진행하였으나, 동작하지 않았으므로, 차후 방법을 알아보겠습니다.
파이썬 자주 사용하는 패키지 (0) | 2021.08.11 |
---|---|
Visual Studio code 가상환경 설정하기 (0) | 2021.08.11 |
RaspberryPi python Visual Studio code GPIO 제어 코딩 및 실행 (0) | 2021.08.09 |
라즈베리파이를 파이썬으로 Visual Studio code 코딩 및 원격 실행 (0) | 2021.08.09 |
우분투 ubuntu 절전모드 해제하기 (0) | 2021.08.09 |
댓글 영역