Я хочу выбрать одну функцию из изображения с несколькими функциями и использовать openCv, чтобы удалить все другие функции из изображения, а затем сохранить в формате png:
см. Мою текущую попытку на изображении # 2.
Проблема заключается в качестве изображения результата, которого я сейчас достигаю.
- многофункциональное изображение
- текущая попытка
Это код, который я написал и дает мне результат, представленный на изображении # 2
import numpy as np
import cv2
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3))
imageawal = cv2.imread('D:/Kuliah Zelig/TA/Images/cobapotong.jpg', cv2.IMREAD_UNCHANGED)
image = cv2.cvtColor(imageawal, cv2.COLOR_BGR2GRAY)
images = cv2.GaussianBlur(image,(3,3),0,0,cv2.BORDER_DEFAULT)
denoise = cv2.fastNlMeansDenoising(images,None,30,7,21)
binary = cv2.adaptiveThreshold(denoise,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)
imgreduct = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)
cv2.imshow('imgreduct', imgreduct)
contours = cv2.findContours(imgreduct, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
a = 0
for cnt in contours:
mask = np.ones(imgreduct.shape[:2], dtype="uint8")
cv2.drawContours(mask, [cnt], -1,0,-1)
mask_inv = cv2.bitwise_not(mask)
imgmask = cv2.bitwise_and(imageawal, imageawal, mask=mask_inv)
imgmasked = cv2.cvtColor(imgmask, cv2.COLOR_BGR2RGBA)
imgmasked[np.all(imgmasked == [0, 0, 0, 255], axis=2)] = [0, 0, 0, 0]
image = cv2.cvtColor(imgmasked, cv2.COLOR_RGBA2BGRA)
cv2.imshow("mask", mask)
cv2.imshow("mask_inv", mask_inv)
cv2.waitKey(0)
a = a +1
cv2.waitKey(0)
cv2.destroyAllWindows()