Image1 contains a rectangle with residuals
and Image2 represent the desired result.
I want to get the same result as Image2 using Image1 in Python, but I'm not sure if it's possible, nor the necessary methods.
I tried using the image's transparency to remove it, but I'm not sure if that's possible.
Your "residual" image is less saturated than the "core" image, so You can combine "residual" with "core", see Wikipedia hsv article.
Using imagemagick, I can convert your image to hsv color space, discard the h
and v
channels, and then threshold the saturation channel to find the most saturated area as follows:
magick input.png -colorspace hsv -separate -delete 0,2 -threshold 75% rssult.png
Using python and opencv, roughly as follows:
import cv2 as cv import numpy as np # Load image im = cv.imread(YOURIMAGE) # Convert to HSV colourspace and split channels hsv = cv.cvtColor(im, cv.COLOR_BGR2HSV) H, S, V = cv.split(hsv) # Make mask of areas of high saturation coreMask = S > 200 # Scale up from range 0..1 to range 0..255 and save as PNG cv.imwrite('result.png', coreMask * 255)
If I split the image into h, s and v components and plot h (hue) on the left, s (saturation) in the middle and v (value, i.e. brightness) on the right, you can Center s (saturation) image, "core" shape with higher pixel values, "residual" with lower pixel values:
The above is the detailed content of How to remove residuals from images using Python. For more information, please follow other related articles on the PHP Chinese website!