반응형
처음 코드: 이미지 파일 불러오기
이 코드는 PyCharm 에디터에서 카피해서 직접 붙여 넣은 코드 모습이고
import cv2
image = cv2.imread('figures.jpg', cv2.IMREAD_UNCHANGED)
cv2.imshow("images", image)
cv2.waitKey(0)
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()
여기까지 기본 프로그램.
반응형
'OpenCV' 카테고리의 다른 글
OpenCV Example 36강 (0) | 2024.06.27 |
---|---|
OpenCV Python 고급 활용 강좌 소스 코드 1 (1) | 2023.12.05 |
OpenCV Python 고급 활용 강좌 소스 코드 4 (0) | 2023.12.05 |
OpenCV Python 고급 활용 강좌 소스 코드 3 (0) | 2023.12.05 |
OpenCV Python 고급 활용 강좌 소스 코드 2 (0) | 2023.12.05 |
OpenCV 파이선 강의 실습 코드 4 (2) | 2023.11.29 |
OpenCV 파이선 강의 실습 코드 3 (1) | 2023.11.22 |
OpenCV 파이선 강의 실습 코드 2 (2) | 2023.11.22 |
더욱 좋은 정보를 제공하겠습니다.~ ^^