Basic Image Operations

Python Pillow Color Conversions

Image Manipulation

Image Filtering

Image Enhancement and Correction

Image Analysis

Advanced Topics

  • Image Module
  • Python Pillow Useful Resources

    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

    Lets 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