In the last article I presented how to compute a bounding box using OpenCV, this method was also used to compute the skew angle but with a reduced accuracy compared to the first method. Test Set We will be using the same small test set as before: The naming convention for those images is simple, the first letter stands for the sign of the angle p for plus, m for minus and the following number is the value of the angle. Bounding Box In this article I will assume we have computed the skew angle of each image with a good accuracy and we now want to rotate the text by this angle value. We therefore declare a function called deskew that takes as parameters the path to the image to process and the skew angle. However this time there is no preprocessing stage because we want the bounding box of the whole text. Rotation We compute the rotation matrix using the corresponding OpenCV function , we specify the center of the rotation the center of our bounding box , the rotation angle the skew angle and the scale factor none here.
|Published (Last):||19 October 2010|
|PDF File Size:||19.6 Mb|
|ePub File Size:||1.34 Mb|
|Price:||Free* [*Free Regsitration Required]|
Given an image containing a rotated block of text at an unknown angle, we need to correct the text skew by: Detecting the block of text in the image. Computing the angle of the rotated text. Rotating the image to correct for the skew.
To learn more about text skew correction, just keep reading. Looking for the source code to this post? To see how our text skew correction algorithm is implemented with OpenCV and Python, be sure to read the next section. ArgumentParser ap. A thresholding operation Lines 23 and 24 is then applied to binarize the image: Figure 2: Applying a thresholding operation to binarize our image.
Our text is now white on a black background. We pass these coordinates into cv2. The cv2. As the rectangle is rotated clockwise the angle value increases towards zero. When zero is reached, the angle is set back to degrees again and the process continues. Note: For more information on cv2. Lines 37 and 38 handle if the angle is less than degrees, in which case we need to add 90 degrees to the angle and take the inverse.
Finally, we display the results to our screen: draw the correction angle on the image so we can validate it cv2. Lines handle displaying the output image. Here we can see that that input image has a counter-clockwise skew of 4 degrees. Applying our skew correction with OpenCV detects this 4 degree skew and corrects for it. Again, our skew correction algorithm is able to correct the input image. Regardless of skew angle, our algorithm is able to correct for skew in images using OpenCV and Python.
Interested in learning more about computer vision and OpenCV? The algorithm itself is quite straightforward, relying on only basic image processing techniques such as thresholding, computing the minimum area rotated rectangle, and then applying an affine transformation to correct the skew.
Download the code! All too often I see developers, students, and researchers wasting their time, studying the wrong things, and generally struggling to get started with Computer Vision, Deep Learning, and OpenCV. I created this website to show you what I believe is the best possible way to get your start. Reader Interactions.
Subscribe to RSS
How to deskew an image
Clock Skew Removal (Clock Deskewing) using PLL and DLL
Text skew correction with OpenCV and Python