Yashb | Convert image to text using PYTHON!

Convert image to text using PYTHON!

  • by Abdallah Alaa Alwarawreh
  • Last updated: 2022-02-17 11:59:31
  • Estimated time to read: 15 minutes


Today we will be making a python program that takes in an image and outputs it as black and white text.


This is how the end result looks:

Convert image to text using PYTHON!


This is what the project structure looks like:


Required packages are:


Install opencv-python using pip:


With all of that out of the way, let's get into the code.


We need to import the OpenCV library



import cv2


Now we need to open an image we can use cv2.imread() like this:



img = cv2.imread("flag.png")

 

In my case, I’m using flag.png as my image.


Now let's show the image on the screen:



cv2.imshow("Flag", img)
cv2.waitKey(0)


Convert image to text using PYTHON!


Ok, nice, now let's convert the image to grayscale:



img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


Convert image to text using PYTHON!


Now after we converted it to grayscale, let’s make it black and white:



ret, img = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY)


Note: Change the number 80 to fit your needs

Convert image to text using PYTHON!

Now into the fun part, converting the image to text, I went ahead and made 2 variables for black pixels and white pixels:



Black = "░"
White = "█"


Now we need to loop through each pixel in the image like this:



for i in range(img.shape[0]):
    for j in range(img.shape[1]):


Now let's check if the pixel is black or white:



if img[i][j] == 255:
   	FullWord+=White+White
   else:
FullWord+=Black+Black


And after the second loop finish we add a new line like this:



FullWord += "\n"


After we go through each pixel we write the “FullWord” into Output.txt:



with open("Output.txt", "w", encoding="utf-8") as f:
   	 f.write(FullWord)


Lets now run the code and see the output:

Convert image to text using PYTHON!


Full Script:



import cv2
 
img = cv2.imread("flag.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY)
cv2.imshow("Flag", img)
cv2.waitKey(0)
 
 
Black = "░"
White = "█"
 
FullWord = ""
for i in range(img.shape[0]):
   
    for j in range(img.shape[1]):
        if img[i][j] == 255:
            FullWord+=White+White
        else:
            FullWord+=Black+Black
   
    FullWord += "\n"
 
 
with open("Output.txt", "w", encoding="utf-8") as f:
    f.write(FullWord)





Table of contents