Скрипт Python для генерации текста с точками из любого изображения
Предварительные требования: Python OpenCV
В этой статье мы увидим, как мы можем использовать Python3 для создания пунктирного текста, представляющего изображение. Мы используем такие тексты в сообщениях и социальных сетях, и создание их - интересная задача обработки изображений.
Эта задача потребует от нас определения краев данного изображения. После этого мы можем использовать любой символ, например «.», «O» или «x», чтобы отображать яркие и темные пиксели.
- Сначала создайте новый скрипт python и установите открытое резюме.
python3 -m pip установить opencv-python --user
- Теперь импортируйте cv2 и загрузите изображение, которое хотите преобразовать. Здесь имя изображения - «mic.jpg», и оно находится в том же каталоге. Нам нужно использовать изображение в режиме оттенков серого, поэтому укажите дополнительный параметр для загрузки в режиме оттенков серого.
# импортировать необходимые модули импорт cv2 # Прочитать изображение img = cv2.imread ('mic.jpg', 0)
- Мы можем уменьшить шум на изображении, чтобы скругленные углы и края распознавались плавно. Для этого мы можем использовать метод medianblur () из cv2.
# Применить медианное размытие img = cv2.medianBlur (img, 5)
- Для определения границ в openCV доступны различные функции определения пороговых значений. Но наиболее совместимым в данном случае является ADAPTIVE_THRESH_MEAN_C. Кроме того, мы можем проверить и другие пороговые функции.
# Примените пороговое значение MEAN, чтобы получить четкие края изображение = cv2.adaptiveThreshold (img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11,2)
Теперь у нас есть изображение, имеющее только края. Мы можем перебирать наше изображение, чтобы напечатать яркие и темные точки, и это сгенерирует для нас пунктирный текст. Если изображение слишком велико, мы можем использовать cv2.resize (), чтобы уменьшить изображение, чтобы его можно было использовать.
Реализация :
Python3
# Python script to convert the given image # into a dotted text using opencv # import the required modules import cv2 # Read the image img = cv2.imread( "mic.jpg" , 0 ) # Apply median blur img = cv2.medianBlur(img, 5 ) # Apply MEAN thresholding to get refined edges image = cv2.adaptiveThreshold( img, 255 , cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11 , 2 ) # Convert the image into a compatible size # We will use 60 pixels wide image so that text # fits in the console # Preserve the ratio ratio = len (image) / len (image[ 0 ]) # Assign new width and calculate new height new_width = 60 new_height = int (ratio * new_width) # Resize the image image = cv2.resize(image, (new_height, new_width)) # Iterate over the array and print the dark pixels # or we can use any other symbol too. for i in range ( len (image)): for j in range ( len (image[ 0 ])): print ( "o" if image[i, j] < 100 else "." , end = "") print () |
- Исходное изображение:
- Изображение в градациях серого после применения медианного размытия:
- Изображение после применения адаптивного среднего порога:
- Окончательный вывод, напечатанный на консоли:
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.