관심 영역을 지정한 후, 해당 영역을 반전시킨 부분을 이미지에 반영하는 코드이다.
import cv2
import numpy as np
img = cv2.imread('image.jpg')
cv2.imshow('img', img)
drag = False # drag 상태
defalut_x, default_y, w, h = -1,-1,-1,-1 # 좌표
blue = (255,0,0)
def Mouse(event, x, y, flag, param):
global drag, default_x, default_y, img # global variance
if event == cv2.EVENT_LBUTTONDOWN: # 왼쪽 버튼 누름
drag = True
default_x = x
default_y = y
elif event == cv2.EVENT_MOUSEMOVE: # 마우스 이동
if drag:
draw = img.copy() # img 복제
cv2.rectangle(draw, (default_x, default_y), (x,y), blue, 3)
cv2.imshow("img", draw)
elif event == cv2.EVENT_LBUTTONUP: # 왼쪽 버튼 뗌
if drag:
drag = False
w = x - default_x
h = y - default_y
if w > 0 and h > 0:
draw = img.copy()
cv2.rectangle(draw, (default_x, default_y), (x,y), blue, 3)
cv2.imshow("img", draw)
roi = img[default_y:default_y+h, default_x:default_x+w]
reserve_roi = cv2.flip(roi, 0) # roi의 상하 반전, flip 함수에 (roi, 1)을 입력하면 좌우 반전
cv2.imshow("drag", roi) # drag 한 창 생성
cv2.imwrite('drag.jpg', roi) # drag 내용 저장
img[default_y:default_y+h, default_x:default_x+w] = reserve_roi
else:
cv2.imshow('img',img)
cv2.setMouseCallback('img', Mouse)
cv2.waitKey()
cv2.destroyAllWindows()
728x90
반응형
'데이터 분석 & 시각화 > OpenCV' 카테고리의 다른 글
[OpenCV Practice 15-6] 이미지 컨투어 etc (3) | 2021.03.31 |
---|---|
[OpenCV Practice 15-5] 이미지 컨투어 계층 (Image Contour - Hierarchy) (0) | 2021.02.17 |
[OpenCV Practice 15-4] 이미지 컨투어 feature (Image Contour - feature 3) (0) | 2020.12.23 |
[OpenCV Practice 15-3] 이미지 컨투어 feature (Image Contour - feature 2) (0) | 2020.12.19 |
[OpenCV Practice 15-2] 이미지 컨투어 feature (Image Contour - feature 1) (2) | 2020.12.18 |
최근댓글