소프트웨어융합/파이썬 기타.py
python: opencv: 툴이해 기본(1)
류지나
2021. 9. 27. 17:42
검정네모
import cv2
import matplotlib.pyplot as plt
import time
image[0:100, 0:100]=[0,0,0]
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()
import cv2
import matplotlib.pyplot as plt
image = cv2.imread('downloads/cat.png')
image[:, :, 2] = 0
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()
빨강색 제거
import cv2
import matplotlib.pyplot as plt
expand= cv2.resize(image, None, fx=2.0, fy=2.0, interpolation=cv2.INTER_CUBIC)
plt.imshow(cv2.cvtColor(expand, cv2.COLOR_BGR2RGB))
plt.show()
shrink = cv2.resize(image, None, fx=0.8, fy=0.8)
plt.imshow(cv2.cvtColor(shrink, cv2.COLOR_BGR2RGB))
plt.show()
사진 확대 축소
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('Downloads/cat.png')
height, width = image.shape[:2]
print(height, width)
M = np.float32([[1, 0, 50], [0, 1, 10]])
dst = cv2.warpAffine(image, M, (width, height))
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()
사진 수평수직이동
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('Downloads/cat.png')
# 행과 열 정보만 저장합니다.
height, width = image.shape[:2]
M = cv2.getRotationMatrix2D((width / 2, height / 2), 90, 0.5)
dst = cv2.warpAffine(image, M, (width, height))
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()
축소와 회전 합치기
import cv2
import matplotlib.pyplot as plt
111
image_1 = cv2.imread('Downloads/image_1.png')
image_2 = cv2.imread('Downloads/image_2.png')
result = cv2.add(image_1, image_2)
plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.show()
result = image_1+image_2
plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.show()
사진 합치는 방식 cv2->saturation. numpy연산(+)->
import cv2
import matplotlib.pyplot as plt
image = cv2.imread('gray_image.jpg', cv2.IMREAD_GRAYSCALE)
images = []
ret, thres1 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)
ret, thres2 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY_INV)
ret, thres3 = cv2.threshold(image, 127, 255, cv2.THRESH_TRUNC)
ret, thres4 = cv2.threshold(image, 127, 255, cv2.THRESH_TOZERO)
ret, thres5 = cv2.threshold(image, 127, 255, cv2.THRESH_TOZERO_INV)
images.append(thres1)
images.append(thres2)
images.append(thres3)
images.append(thres4)
images.append(thres5)
for i in images:
plt.imshow(cv2.cvtColor(i, cv2.COLOR_GRAY2RGB))
plt.show()
임계선 처리하기
import cv2
image = cv2.imread('hand_writing_image.jpg', cv2.IMREAD_GRAYSCALE)
ret, thres1 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)
thres2 = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 21, 3)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_GRAY2RGB))
plt.show()
plt.imshow(cv2.cvtColor(thres1, cv2.COLOR_GRAY2RGB))
plt.show()
plt.imshow(cv2.cvtColor(thres2, cv2.COLOR_GRAY2RGB))
plt.show()
적응임계점 처리하기
import cv2
import numpy as np
def change_color(x):
r = cv2.getTrackbarPos("R", "Image")
g = cv2.getTrackbarPos("G", "Image")
b = cv2.getTrackbarPos("B", "Image")
image[:] = [b, g, r]
cv2.imshow('Image', image)
image = np.zeros((600, 400, 3), np.uint8)
cv2.namedWindow("Image")
cv2.createTrackbar("R", "Image", 0, 255, change_color)
cv2.createTrackbar("G", "Image", 0, 255, change_color)
cv2.createTrackbar("B", "Image", 0, 255, change_color)
cv2.imshow('Image', image)
cv2.waitKey(0)
트랙바 설정하기