본문 바로가기

OpenCV

OpenCV 파이선 강의 실습 코드 1

반응형

 

 

 

처음 코드: 이미지 파일 불러오기

 

이 코드는 PyCharm 에디터에서 카피해서 직접 붙여 넣은 코드 모습이고

 

import cv2

image = cv2.imread('figures.jpg', cv2.IMREAD_UNCHANGED)
cv2.imshow("images", image)
cv2.waitKey(0)

 

 

아래는 블로그 에디터에서 코드 블럭으로 삽입한 코드 모습이다.

 

import cv2

image = cv2.imread('figures.jpg', cv2.IMREAD_UNCHANGED)
cv2.imshow("images", image)
cv2.waitKey(0)

 

 

지정한 털러 영상을 회색조 Grayscale 형태로 읽어 화면에 출력 후 원하는 포맷으로 저장

 

import cv2

image = cv2.imread('figures100.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow("images", image)
cv2.imwrite('figures-gray.jpg', image)
cv2.imwrite('figures-gray.bmp', image)
cv2.waitKey(0)

 

 

컬러 영상을 다양한 입력 방식으로 읽기

 

import cv2

cimage1 = cv2.imread('figures100.jpg', cv2.IMREAD_UNCHANGED)
cimage2 = cv2.imread('figures100.jpg', cv2.IMREAD_COLOR)
cimage3 = cv2.imread('figures100.jpg', cv2.IMREAD_REDUCED_COLOR_2)

gimage1 = cv2.imread('figures100.jpg', cv2.IMREAD_GRAYSCALE)
gimage2 = cv2.imread('figures100.jpg', cv2.IMREAD_REDUCED_GRAYSCALE_2)

cv2.imshow("Image1", cimage1)
cv2.imshow("Image2", cimage2)
cv2.imshow("Image3", cimage3)

cv2.imshow("Image4", gimage1)
cv2.imshow("Image5", gimage2)

cv2.waitKey(0)

 

 

입력 영상에 대한 넓이, 높이, 채널 수 정보 출력

 

import cv2

image = cv2.imread('figures100.jpg', cv2.IMREAD_UNCHANGED)
(hit, wth, ch) = image.shape
print('height {}, width {}, channel #{}'.format(hit,wth,ch))

image = cv2.imread('figures-gray.jpg', cv2.IMREAD_UNCHANGED)
(hit, wth) = image.shape
print('height {}, width {}'.format(hit,wth))
cv2.waitKey(0)

 

 

이미지 3채널인지 2 채널인지 구분

 

print(len(image.shape))
print(len(image2.shape))

 

 

waitKey 사용

 

import cv2

image = cv2.imread('figures100.jpg', cv2.IMREAD_UNCHANGED)
cv2.imshow('My Window', image)

# cv2.waitKey(1000)
# cv2.waitKey(0)

key = cv2.waitKey(0)
print("Key = {0} ({1})".format(key, chr(key)))

 

 

웹캠 입력

 

import cv2

capture = cv2.VideoCapture(0)
width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
print('Frame width {}, height {}'.format(width, height))

capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1024)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 768)

while cv2.waitKey(32) <0:
    ret, frame = capture.read()
    if not ret:     # ret == False
        break
    cv2.imshow("Frame", frame)

capture.release()

 

 

강의 슬라이드 p.97

 

import cv2
capture = cv2.VideoCapture(0)

#if capture.isOpened() == True:
if capture.isOpened():
    ret, frame = capture.read()
    cv2.imshow("Frame", frame)

capture.release()
cv2.waitKey(0)

 

 

x 키 입력 기다리며 반복 처리

 

import cv2
capture = cv2.VideoCapture(0)

#if capture.isOpened() == True:
while capture.isOpened():
    ret, frame = capture.read()
    if not ret:
        break

    cv2.imshow("Frame", frame)

    key = cv2.waitKey(32)
    if key == ord('x'):
        break

capture.release()

 

 

반복 이미지 캡쳐

 

import cv2
import datetime

capture = cv2.VideoCapture(0)

while capture.isOpened():
    ret, frame = capture.read()
    if not ret:
        break

    cv2.imshow("Frame", frame)

    key = cv2.waitKey(32)
    if key == ord('x'):
        break
    elif key == ord('s'):
        now = datetime.datetime.now()
        filename = "{}-{}-{}.jpg".format(now.hour, now.minute, now.second)
        cv2.imwrite(filename, frame)

capture.release()

 

 

OpenCV 기본 입출력 - 동영상 파일

 

mp4 파일 읽기

 

import cv2

video = cv2.VideoCapture('kara.mp4')

width = video.get(cv2.CAP_PROP_FRAME_WIDTH)
height = video.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = video.get(cv2.CAP_PROP_FPS)
fcount = video.get(cv2.CAP_PROP_FRAME_COUNT)
fourcc = video.get(cv2.CAP_PROP_FOURCC)

print('Frame width {}, Height {}'.format(width, height))
print('Frme fps {}'.format(fps))
print('Frame count {}'.format(fcount))
print('Codec {}'.format(fourcc))

while cv2.waitKey(32) < 0:
    ret, frame = video.read()
    if not ret:
        break

    cv2.imshow("Frame", frame)

video.release()

 

 

동영상 파일 레코드 저장

 

import cv2

# Web Camera
capture = cv2.VideoCapture(0)
# video handle with codec setting
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
video = cv2.VideoWriter('capture.avi', fourcc, 30.0,(640,480))

while cv2.waitKey(32) < 0:
    ret, frame = capture.read()
    if not ret:
        break

    cv2.imshow("Frame", frame)
    video.write(frame)

capture.release()
video.release()

 

 

윈도우 생성 크기 조정, 이동, 닫기

 

import cv2

image = cv2.imread('figures100.jpg', cv2.IMREAD_UNCHANGED)

cv2.namedWindow("Sample Image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("Sample Image", image)
cv2.waitKey(0)

cv2.resizeWindow("Sample Image", 256, 256)
cv2.waitKey(0)

cv2.moveWindow("Sample Image", 0, 0)
cv2.waitKey(0)

cv2.destroyWindow("Image")
cv2.destroyAllWindows()

 

 

키보드 이벤트 처리 - 윈도우 이동

 

import cv2

image = cv2.imread('figures100.jpg', cv2.IMREAD_UNCHANGED)
x, y = 100, 100

while True:
    cv2.imshow("Image", image)
    cv2.moveWindow("Image", x, y)

    key = cv2.waitKey(0)
    print("Key = {} Char = {}".format(key, chr(key)))

    if key == ord('j'):
        x -= 10
    elif key == ord('k'):
        x += 10
    elif key == ord('i'):
        y -= 10
    elif key == ord('m'):
        y += 10
    else:
        break

 

 

사용자 마우스 입력에 따라 원 그리기

 

import cv2

def onMouse(event, x, y, flags, param):
    print(event, x, y)

    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(param, (x, y), 30, (255, 0, 0), -1)
        cv2.imshow("Image", param)
    elif event == cv2.EVENT_RBUTTONDOWN:
        cv2.circle(param, (x, y), 30, (0, 0, 255), -1)
        cv2.imshow("Image", param)

image = cv2.imread('figures100.jpg', cv2.IMREAD_UNCHANGED)
cv2.imshow("Image", image)

cv2.setMouseCallback("Image", onMouse, image)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

여기까지 기본 프로그램.

 

 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩