open CV 3_이미지 변형

chi yeong Yu·2022년 2월 15일
0

opencv

목록 보기
3/12

Open cv 동영상을 하려 했으나 이미지 자료가 꽤 많기에..

이미지 스케일 변경

import cv2
from matplotlib import pyplot as plt
#이번에는 matplotlib으로 시각화 진행

image = cv2.imread('img.jpg', cv2.IMREAD_GRAYSCALE)
image_50 = cv2.resize(image, (50, 50))

plt.imshow(image_50, 'gray') <- # 'gray' = cmap='gray' 동일
plt.axis('off')
plt.show()
#사이즈만 줄여도 픽셀이 쉽게 깨진다.

import cv2
from matplotlib import pyplot as plt
#이미지는 2차원 (numpy)배열로 저장된다.
image = cv2.imread('img.jpg', cv2.IMREAD_GRAYSCALE)
crop_image = image[:,:360] <- #기존 (480, 720) 세로자르기
plt.imshow(crop_image, 'gray')
# plt.axis('off') -> axis를 주지않으면 사진과 어울리지 않은 그래프 틱이 생긴다.
plt.show()
print(crop_image.shape, image.shape)

import cv2
from matplotlib import pyplot as plt

image = cv2.imread('img.jpg', cv2.IMREAD_GRAYSCALE)
blur = cv2.blur(image, (10, 10)) # 커널을 생성해 부드러움을 만듦.
blur_50 = cv2.blur(image, (50, 50))
# 값이 커질 수록 더욱 흐릿해진다.
plt.imshow(blur, 'gray')
plt.axis('off') # ticks 없애는 1안
plt.show()
plt.imshow(blur_50, 'gray')
plt.xticks([]) # 이미지만 보이게 하는 2안
plt.yticks([])
plt.show()

import cv2
from matplotlib import pyplot as plt
import numpy as np

kernel = np.ones((5,5)) / 10.0 
# 커널을 생성, 커널 크기는 (너비,높이)
image_kernel = cv2.filter2D(image, -1, kernel) 
#중간에 -1은 픽셀값의 범위를 지정하는 거라 -1이면 동일한 범위 유지
#주변 픽셀값의 평균을 계산하는 커널
plt.imshow(image_kernel, 'gray')
plt.xticks([]), plt.yticks([])
plt.show()

gaussian = cv2.GaussianBlur(image, (5,5), 0) # cv2.getGaussianKernel(5,0)
# 정규화를 시켜 이미지가 조금 더 뚜렷해진다.
plt.imshow(gaussian, 'gray')
plt.xticks([]), plt.yticks([])
plt.show()
#경계선 감지까지 사용된다고 한다.
#1번째 배열은 np.ones, 2번째 배열은 gaussian

import cv2
from matplotlib import pyplot as plt
import numpy as np

kernel = np.array([[0, -1, 0],
                   [-1, 5,-1],
                   [0, -1, 0]])
# 이미지 선명하게 하는 배열 !! 숫자가 하나만 바뀌어도 흑백으로 변한다.
sharp_image = cv2.filter2D(image, -1, kernel)
#중간에 -1은 픽셀값의 범위를 지정하는 거라 -1이면 동일한 범위 유지
plt.imshow(sharp_image, cmap="gray")
plt.axis("off")
plt.show()

마무리로 선명한 고양이 보고 힐링하기 :)

profile
호기심천국

0개의 댓글