Top answer in this link How to pixelate a square image to 256 big pixels with python? uses PIL
to pixelate image. Converting image from PIL
to cv2.Mat
is possible but I'm not allowed to use other library, and I couldn't find any good method using opencv.
Is there any way to pixelate image using OpenCV
library only in Python? Any sample image is fine. Solution with pixel size parameter that I can control for later adjustment would be very appreciated.
To average blur an image, we use the cv2. blur function. This function requires two arguments: the image we want to blur and the size of the kernel. As Lines 22-24 show, we blur our image with increasing sizes kernels.
To make an image blurry, you can use the GaussianBlur() method of OpenCV. The GaussianBlur() uses the Gaussian kernel. The height and width of the kernel should be a positive and an odd number. Then you have to specify the X and Y direction that is sigmaX and sigmaY respectively.
With the help of himself, I moved Mark Setchell's answer, which is the above mentioned top answer, to plain OpenCV
Python code. (Have a look at the revision history of my answer to see the old version using a loop.)
import cv2
# Input image
input = cv2.imread('images/paddington.png')
# Get input size
height, width = input.shape[:2]
# Desired "pixelated" size
w, h = (16, 16)
# Resize input to "pixelated" size
temp = cv2.resize(input, (w, h), interpolation=cv2.INTER_LINEAR)
# Initialize output image
output = cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST)
cv2.imshow('Input', input)
cv2.imshow('Output', output)
cv2.waitKey(0)
Input (from linked question):
Output:
Disclaimer: I'm new to Python in general, and specially to the Python API of OpenCV (C++ for the win). Comments, improvements, highlighting Python no-gos are highly welcome!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With