처음 코드: 이미지 파일 불러오기
이 코드는 PyCharm 에디터에서 카피해서 직접 붙여 넣은 코드 모습이고
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 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.
귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.
캐어랩