Python Pillow - ImageChops.logical_xor() Function



The PIL.ImageChops.logical_xor() function performs a logical XOR (exclusive OR) operation between corresponding pixels of two input images. Both input images must have mode "1", representing binary (black-and-white) images. The XOR operation evaluates to true for pixels where the values of the corresponding pixels in the input images are different.

The operation is defined as follows −

$$\mathrm{out\:=\:((bool(image1)\:!=\:bool(image2))\%MAX)}$$

Syntax

Following is the syntax of the function −

PIL.ImageChops.logical_xor(image1, image2)

Parameters

Here are the details of this function parameters −

  • image1 − The first input binary image with mode "1".

  • image2 − The second input binary image with mode "1".

Return Value

The return type of this function is an Image.

Examples

Example 1

Let’s the working of the logical_xor() function on a binary image created by the numpy array.

from PIL import Image, ImageChops
import numpy as np

# Create two binary images with mode "1"
array1 = np.array([(255, 64, 3), (255, 0, 0), (255, 255, 0), (255, 255, 255), (164, 0, 3)], dtype=np.uint8)
array2 = np.array([(20, 14, 3), (25, 222, 0), (255, 155, 0), (255, 55, 100), (180, 0, 78)], dtype=np.uint8)

image1 = Image.fromarray(array1, mode="1")
image2 = Image.fromarray(array2, mode="1")

# Display the pixel values of the two input images
print("Pixel values of image1 at (0, 0):", image1.getpixel((0, 0)))
print("Pixel values of image2 at (0, 0):", image2.getpixel((0, 0)))

# Perform logical XOR between the two images
result = ImageChops.logical_xor(image1, image2)

# Display the pixel values of the resulting image at (0, 0)
print("Pixel values of the result at (0, 0) after logical XOR:", result.getpixel((0, 0)))

Output

Pixel values of image1 at (0, 0): 255
Pixel values of image2 at (0, 0): 0
Pixel values of the result at (0, 0) after logical OR: 255

Example 2

In this example, the PIL.ImageChops.logical_xor() function is used to perform a logical XOR operation on two binary images.

from PIL import Image, ImageChops

# Create two binary images with mode "1"
image1 = Image.open('Images/dark_img1.png').convert('1')
image2 = Image.open('Images/dark_img2.png').convert('1')

# Perform logical XOR between the two images
result = ImageChops.logical_xor(image1, image2)

# Display the input and resulting images
image1.show()
image2.show()
result.show()

Output

Input Image 1

dark img1

Input Image 2

dark img2

Output Image

imagechops logical xor

Example 3

Here is another example of applying the logical_xor() function on different set of input images.

from PIL import Image, ImageChops

# Create two binary images with mode "1"
image1 = Image.open('Images/Car_2.jpg').convert('1')
image2 = Image.open('Images/ColorDots.png').convert('1')

# Perform logical XOR between the two images
result = ImageChops.logical_xor(image1, image2)

# Display the input and resulting images
image1.show()
image2.show()
result.show()

Output

Input Image 1

car bw

Input Image 2

dots bw

Output Image

chops logical xor
python_pillow_function_reference.htm
Advertisements