[openCV] CH2. openCV의 이미지 조작 함수

김우경·2021년 1월 15일
0

openCV

목록 보기
3/5

Murtaza's Workshop님 강의를 보고 공부한 내용입니다.

openCV의 x축의 증가 방향은 오른쪽이지만, y축의 증가 방향은 위쪽이 아닌 아래쪽

원본 이미지의 사이즈 확인하기

import cv2

# reading image
img = cv2.imread("resources/chiiro.jpg")
print(img.shape)
cv2.imshow("output_img", img)
cv2.waitKey(0)

순서대로 height, width, #channels (in this case, BGR)입니다.

크기 바꾸기

openCV의 resize()함수를 이용해서 바꿔줍니다.

import cv2

# reading image
img = cv2.imread("resources/chiiro.jpg")
print(img.shape)

imgResize = cv2.resize(img, (300, 300))
cv2.imshow("output_img", img)
cv2.imshow("resize Image", imgResize)
cv2.waitKey(0)

크롭 하기

크롭은 읽어들인 이미지를 python의 인덱스 슬라이싱과 같은 개념으로 잘라줍니다.

import cv2

# reading image
img = cv2.imread("resources/chiiro.jpg")
print(img.shape)

#Crop Image -> height, width
imgCropped = img[0:200, 200:500]

cv2.imshow("output_img", img)
cv2.imshow("crop Image", imgCropped)
cv2.waitKey(0)

Coloring Image

numpy의 zeros()함수를 이용해서 까만 배경이미지를 만들고, 그 위에 컬러링하기

import cv2
import numpy as np

img = np.zeros((512, 512, 3))
img[200:300, 100:250] = 255,0,0

cv2.imshow("Image", img)

cv2.waitKey(0)

Lining Image

이미지 위에 그림을 그리는 함수는 선, 사각형, 원에 따라 각각 line(), rectangle(), circle() 함수를 사용합니다.

import cv2
import numpy as np

img = np.zeros((512, 512, 3))

#draw line
cv2.line(img, (0,0), (img.shape[1],img.shape[0]), (0,255,0), 3)
#draw rectangle
cv2.rectangle(img, (0,0), (250,350), (0,0,255), 3)
#draw circle
cv2.circle(img, (400,50), 30, (255, 255, 0), 5)

cv2.imshow("Image", img)

cv2.waitKey(0)

Put text on Image

import cv2
import numpy as np

img = np.zeros((512, 512, 3))

cv2.putText(img, " OPENCV ", (200,200), cv2.FONT_ITALIC, 1, (0,150,0), 1)

cv2.imshow("Image", img)

cv2.waitKey(0)

Warp Perspective

삐뚫어진 사각형

import cv2
import numpy as np

img = cv2.imread("resources/card.jpg")

width, height = 250, 350
pts1 = np.float_32([[111,219], [287,188], [154,482], [352,440]])
pts2 = np.float_32([[0,0], [width, 0], [0, height], [width, height]])
matrix = cv2.getPrespectiveTransform(pts1, pts2)
imgOutput = cv2.warpPerspective(img, matrix, (width, height))

cv2.imshow("Image", img)
cv2.imshow("output", imgOutput)

cv2.waitKey(0)

Joining Images

import cv2
import numpy as np

img = cv2.imread('resources/chiiro.jpg')

imgHor = np.hstack((img, img))
imgVer = np.vstack((img, img))

cv2.imshow("Horizontal", imgHor)
cv2.imshow("Vertical", imgVer)

cv2.waitKey(0)
profile
Hongik CE

0개의 댓글