저는 OpenCv를 처음 접했고 GrabCut 알고리즘을 사용하여 배경에서 신발을 분할하는 프로그램을 만들고 있습니다. 그런 다음 신발을 흰색 배경에 붙여넣고 싶지만 그 부분에서 고군분투하고 있습니다.
두 이미지를 함께 추가하기 위해 cv2.add () 를 시도했지만 두 이미지의 크기가 같아야하며 프로그램이 사용자에게 이미지를 업로드하라는 메시지를 표시하기 때문에 보장 할 수 없습니다.
나는 또한 whiteBgImg = 255-grabCutImg 를 시도 하여 신발이 아닌 배경을 흰색으로 만들었지 만 이미지에서 기능 감지 및 일치를 수행해야하므로 문제가되는 최종 이미지에 영향을 미치는 것 같습니다.
조언에 미리 감사드립니다! :)
원본 이미지 : Original Shoe
최종 이미지 (grabcut 및 whiteBgImg = 255-grabCutImg 적용 후) : Grabcut Shoe
Python / OpenCV에서이를 수행하는 한 가지 방법이 있습니다.
원본을 되찾기 위해 이미지를 반전합니다. 반전하기 전에 실제 원본으로 시작하는 경우 반전을 건너 뜁니다.
입력:
import cv2
import numpy as np
# load image
img = cv2.imread("shoe_inverted.jpg")
# invert the polarity
img = 255 - img
# convert to gray
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# threshold image and make 3 channels as mask
mask = cv2.threshold(gray, 32, 255, cv2.THRESH_BINARY)[1]
mask = cv2.merge([mask,mask,mask])
# create white image for background of result
white = np.full_like(img, (255,255,255))
# apply mask to img and white
result = np.where(mask!=0, img, white)
# write result to disk
cv2.imwrite("shoe_inverted_inverted.jpg", img)
cv2.imwrite("shoe_mask.jpg", mask)
cv2.imwrite("shoe_result.jpg", result)
cv2.imshow("IMAGE", img)
cv2.imshow("MASK", mask)
cv2.imshow("RESULT", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
원본으로 돌아 가기위한 반전 된 입력 :
마스크 (경계 정리를위한 임계 값 지정 후) :
결과:
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다