How to do erosion on the image in OpenCV

share link

by Dejaswarooba dot icon Updated: Oct 3, 2023

technology logo
technology logo

Solution Kit Solution Kit  

Erosion is a fundamental image processing technique in Python OpenCV programs. It is particularly used when dealing with grayscale or binary images. Erosion is crucial in morphological transformations, often used in opening operations.   


A rectangular structuring element performs erosion. Adjusting the pixel values with the kernel's settings changes the gray image. This process removes the image's small white parts, bright spots, or minor white noises.  


Erosion finds applications in a wide range of computer vision problems. It also finds applications in Deep Learning tasks, such as Harris Corner Detection. It forms a part of the essential image operations arsenal provided by OpenCV. Its source code relies on NumPy, making it accessible for various image-processing tasks.   


It can help clean up low-contrast images. It is also valuable for separating disparate foreground objects. Erosion simplifies complex operations on image boundaries. This demonstrates its importance in basic morphological operations.  


We perform erosion on grayscale or binary images using the cv2.erode function. The cv2.erode function can perform powerful erosion operations on images. Users can use the cv2.erode function to remove the boundaries of objects in an image. You can do this in a binary or grayscale image. It reduces the size of foreground regions and removes small bright regions and noise.  



cv2.erode(src, kernel, dst = None, anchor = None, iterations = 1, borderType = None, borderValue = None)  

Here are some key aspects of the cv2.erode function:   

Input and Output Images: 

The function takes an input image as its first parameter. It returns the eroded image as its output.   

Structuring Element: 

We perform erosion using a structuring element. The second parameter specifies it. This element defines the shape and size of the neighborhood around each pixel in the input image. Typically, one uses a rectangular or square-shaped structuring element. But you can create custom-shaped elements as needed.  


The iteration parameter is the third parameter. You should apply the erosion operation a certain number of times. Each iteration further erodes the image. For most basic erosion tasks, a single iteration is sufficient.   

Border Handling: 

When the image edges erode, we must determine what to do with the border pixels. You specify this using the parameters borderType and borderValue. The borderType can be set to values like cv2.BORDER_CONSTANT to use a constant border value. Use other options like cv2.BORDER_REFLECT and cv2.BORDER_REPLICATE.  

Original image

After erosion


The code performs morphological opening on the input image using a 9x9 square kernel, which involves erosion followed by dilation, to remove noise and small objects from the image while preserving the larger structures. However, the result of this operation is not assigned to a variable, so the output is not saved or displayed.

Follow the steps carefully to get the output easily.

  • Download and install VS Code on your desktop.
  • Open VS Code and create a new file in the editor.
  • Copy the code snippet that you want to run, using the "Copy" button or by selecting the text and using the copy command (Ctrl+C on Windows/Linux or Cmd+C on Mac).,
  • Paste the code into your file in VS Code, and save the file with a meaningful name and the appropriate file extension for Python use (.py).file extension.
  • pip install opencv-python - Use this line in the command prompt to install OpenCV.
  • Add import numpy as np at the start of the code
  • Add the following lines at the end -
cv.imshow('Eroded Image', eroded_image)

  • Make sure you give the correct path of the image. Refer to the output image.
  • To run the code, open the file in VS Code and click the "Run" button in the top menu, or use the keyboard shortcut Ctrl+Alt+N (on Windows and Linux) or Cmd+Alt+N (on Mac).

I hope you found this useful. I have added the dependencies and their version information below.

I found this code snippet by searching for "erode opencv" in kandi. You can try any such use case!


opencv-pythonby opencv

Shell doticonstar image 3491 doticonVersion:72doticon
License: Permissive (MIT)

Automated CI toolchain to produce precompiled opencv-python, opencv-python-headless, opencv-contrib-python and opencv-contrib-python-headless packages.


            opencv-pythonby opencv

            Shell doticon star image 3491 doticonVersion:72doticon License: Permissive (MIT)

            Automated CI toolchain to produce precompiled opencv-python, opencv-python-headless, opencv-contrib-python and opencv-contrib-python-headless packages.

                      If you do not have Opencv that is required to run this code, you can install it by clicking on the above link and copying the pip Install command from the page in kandi.

                      You can search for any dependent library on kandi like Opencv.

                      Environment tested

                      I tested this solution in the following versions. Be mindful of changes when working with other versions.

                      1. The solution is created and tested using Vscode 1.77.2 version
                      2. This code was tested using Python version 3.8.0
                      3. This code was tested using opencv-python version 72

                      By using this technique, you can shrink, smooth, or remove small objects in binary images using Opencv python. It's commonly applied for noise reduction and object manipulation in computer vision tasks. This process also facilitates an easy-to-use, hassle-free method to create a hands-on working version of code.


                      How does grayscale affect the use of cv2.erode?   

                      The `cv2.erode` function makes pixel brightness change in grayscale images. Erosion in a grayscale image makes brighter regions less intense. This helps reduce noise and improve object boundaries.  


                      What are the basic morphological operators used in cv2.erode?   

                      The `cv2.erode` function uses two basic morphological operators. One is erosion, which shrinks bright regions in an image. The other is dilation, which expands them.  


                      How does Erosion and Dilation work with cv2.erode?   

                      Erosion and dilation are fundamental morphological operations in image processing. Erosion shrinks bright regions and removes small details, while dilation enlarges them. You can use these actions to remove noise and break objects into parts.  


                      What role does Image Processing play in cv2.erode?   

                      Erosion is a way to process images that can change their appearance. `cv2.erode` is a key function in this domain, often used to clean up images and prepare them for further analysis.  


                       How is image shape affected by using cv2 erode?   

                      Using `cv2.erode` does not change the shape of the image, but it can modify the content. Erosion changes the image's pixel values based on the kernel used. This can make objects smaller or highlight specific features.  


                      What happens to image pixels when using cv2 erode?  

                      When you use `cv2.erode`, the pixels in the image that are in the regions defined by the kernel get changed. This happens by making the pixel value the lowest one in that area. As a result, bright regions in the image become smaller and less bright, like they are being worn away.  


                      1. For any support on kandi solution kits, please use the chat
                      2. For further learning resources, visit the Open Weaver Community learning page.

                      See similar Kits and Libraries