Скрипт 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 modulesimport cv2 # Read the imageimg = cv2.imread("mic.jpg", 0) # Apply median blurimg = cv2.medianBlur(img, 5) # Apply MEAN thresholding to get refined edgesimage = 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 ratioratio = len(image)/len(image[0])# Assign new width and calculate new heightnew_width = 60new_height = int(ratio*new_width)# Resize the imageimage = 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.