在这篇文章中,将探讨几个适合Python初学者的项目,旨在提高编程技能和对Python语言的理解。随着完成越来越多的项目,编程能力将得到显著提升。
OpenCV是一个主要用于计算机视觉任务的编程函数库。可以用它来处理图像、调整图像大小、进行目标检测等。将展示如何使用轮廓快速提取文本。
import cv2
import pytesseract
# 指定Tesseract-OCR在计算机上的路径
pytesseract.pytesseract.tesseract_cmd = 'path_to_tesseract.exe'
# 读取输入图像
img = cv2.imread("input.png")
# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 执行OTSU阈值处理
ret, img_thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY_INV)
# 定义结构形状和核大小
rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (18, 18))
# 对阈值图像进行膨胀处理
dilation = cv2.dilate(img_thresh, rect_kernel, iterations=1)
# 查找图像中的轮廓
img_contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# 复制图像用于绘制矩形
im2 = img.copy()
# 打开文件以保存结果
file = open("Output.txt", "w+")
file.write("")
file.close()
# 遍历每个轮廓
for contour in img_contours:
x, y, w, h = cv2.boundingRect(contour)
rect = cv2.rectangle(im2, (x, y), (x + w, y + h), (0, 255, 0), 2)
cropped_image = im2[y:y + h, x:x + w] # 裁剪文本块
file = open("Output.txt", "a")
text = pytesseract.image_to_string(cropped_image) # 应用OCR
file.write(text)
file.write("\n")
file.close()
以上代码展示了如何使用OpenCV和Tesseract-OCR从图像中提取文本。通过这个过程,可以学习到图像处理和文字识别的基础知识。
假设有一本PDF格式的书籍想要阅读,但是又懒得翻页;如果能够将PDF转换为有声书,那该多好。将使用Python来实现这个功能。
# 导入模块
import PyPDF2
import pyttsx3
# 打开PDF文件
path = open('Book.pdf', 'rb')
# 创建PdfFileReader对象
pdfReaderObj = PyPDF2.PdfFileReader(path)
# 选择要读取的页面
from_page = pdfReaderObj.getPage(12)
content = from_page.extractText()
# 使用pyttsx3将文本转换为语音
speak = pyttsx3.init()
speak.say(content)
speak.runAndWait()
# 安装pywin32
pip install pywin32
# 导入模块
import win32com.client
# 建立与Outlook的连接
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
# 访问收件箱
inbox = outlook.GetDefaultFolder(6)
# 获取邮件
messages = inbox.Items
message = messages.GetFirst()
# 循环遍历收件箱中的所有邮件
while True:
try:
# 打印邮件主题
print(message.subject)
message = messages.GetNext()
except:
message = messages.GetNext()
# 下载附件
for attachment in message.Attachments:
print(attachment.FileName)