728x90
반응형
SMALL
1. 관심 영역(ROI, Region of Interest)
- 영상 내에서 관심이 있는 영역
- cv2.selectROI(창이름, 영상, 중앙에서 시작할지에 대한 여부=False)
- 중앙에서 시작할지에 대한 여부가 True일 경우 선택한 ROI 중앙좌표로 계산
- 기본값은 False이고 왼쪽상단으로 좌표 계산
✅ 다음 그림에서 해 부분을 ROI로 설정하여 합성하고 사각형 그리기(해가 떠있는 부분의 좌표값으로)
import cv2
img = cv2.imread('sun.jpg')
x = 180
y = 17
w = 125
h = 120
roi = img[y: y+h, x: x+w]
img2 = roi.copy()
# print(roi.shape)
img[y:y+h, w+x:x+w+w] = roi
cv2.rectangle(img, (x, y),(x+w+w, y+h), (0, 255, 0), 2)
# cv2.rectangle(img, (180, 17, 125, 120), (0, 255, 0), 2)
cv2.imshow('img', img)
cv2.imshow('roi', img2)
cv2.waitKey()
✅ ROI를 설정할 부분을 마우스 드래그로 설정
import cv2
import numpy as np
# sun.jpg 사진에서 원하는 ROI 부분을 마우스로 선택하고 선택된 ROI를 창으로 출력
isDrag = False
oldx = oldy = w = h = 0
color = (255, 0, 0)
img_copy = None
def on_mouse(event, x, y, flags, param):
global oldx, oldy, w, h, isDrag, img_copy
# 마우스 왼쪽을 눌렀을 때
if event == cv2.EVENT_LBUTTONDOWN:
isDrag = True
oldx = x
oldy = y
elif event == cv2.EVENT_MOUSEMOVE:
if isDrag:
img_copy = img.copy()
cv2.rectangle(img_copy, (oldx, oldy), (x, y), color, 3)
cv2.imshow('img', img_copy)
elif event == cv2.EVENT_LBUTTONUP:
if isDrag:
isDrag = False
w = x - oldx
h = y - oldy
if w > 0 and h > 0 :
cv2.rectangle(img_copy, (oldx, oldy), (x, y), color, 3)
cv2.imshow('img', img_copy)
roi = img[oldy:oldy+h, oldx: oldx+w]
cv2.imshow('roi', roi)
else:
cv2.imshow('img', img)
print('영역이 잘못되었음!')
img = cv2.imread('sun.jpg')
cv2.imshow('img', img)
cv2.setMouseCallback('img', on_mouse)
cv2.waitKey()
✅ selectROI로 간단하게 작성
import cv2
img = cv2.imread('sun.jpg')
# from_center= False: 중심부터가 아니라 내가 찍어준데부터 ROI시작
x, y, w, h = cv2.selectROI('img', img, False)
if w and h:
roi = img[y:y+h, x:x+w]
cv2.imshow('roi', roi)
cv2.waitKey()
728x90
반응형
LIST
'Python > Computer Vision' 카테고리의 다른 글
[파이썬, Python] OpenCV - 이미지 유사도 판단 (1) | 2023.08.27 |
---|---|
[파이썬, Python] OpenCV - 영상의 이진화 (0) | 2023.08.27 |
[파이썬, Python] OpenCV - 크로마키(cromakey) (0) | 2023.08.25 |
[파이썬, Python] OpenCV - 히스토그램과 영상 균등화, 정규화 (0) | 2023.08.25 |
[파이썬, Python] OpenCV - 컬러 영상과 색상 정보 (0) | 2023.08.24 |