wsl에서 우분투 9

개요



wsl에서 python-opencv 해보자.
윤곽을 감지하고 배경을 지우는 것을 보았다.

환경



windows10 64bit

설치


sudo apt install Python3-opencv

원본 이미지





결과





샘플 코드


import numpy as np
import cv2

img = cv2.imread("cat0.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 5, 70)
edges = cv2.dilate(edges, None)
edges = cv2.erode(edges, None)
h, w = img.shape[ : 2]
back = np.ones((h, w, 3), np.uint8) * 255
contour_info = []
contours, _ = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
for c in contours:
    contour_info.append((c, cv2.isContourConvex(c), cv2.contourArea(c), ))
contour_info = sorted(contour_info, key = lambda c: c[2], reverse = True)
max_contour = contour_info[0]
mask = np.zeros(edges.shape)
cv2.fillConvexPoly(mask, max_contour[0], (255))
kernel = np.array([[0.0, -1.0, 0.0], [-1.0, 5.0, -1.0], [0.0, -1.0, 0.0]])
mask = cv2.filter2D(mask, -1, kernel)
res = np.where(np.expand_dims(mask < 1, -1), back, img)
cv2.imwrite('res14.png', res)

이상.

좋은 웹페이지 즐겨찾기