先借助函数os.listdir(“path”)导入路径“path”下的所有文件名,然后再分别打开。
// 导入当前目录下的文件名(不包含自身),返回值为元组
file = os.listdir("./")
根据文件名的后缀判断文件格式。
// 先将字符串变为小写,然后判断其是否以‘jpg’结尾
file.lower().endswith('jpg')
使用举例:
// 依次打开当前目录下的所有图片
import os
// 判断是否为图片格式
for file in os.listdir("./"):
if(file.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm',
'.pgm', '.ppm', '.tif', '.tiff'))):
print(file)
结果:
// 运行结果
01.jpg
handwriting.jpg
tj.jpg
图片1.png
// 打开一张图片
import cv2
image = cv2.imread('01.jpg')
# 通过窗口名关联imshow时的图片,调整图片大小,0表示窗口大小可手动调整(防止图片显示不全)
cv2.namedWindow("窗口名", 0)
cv2.imshow("窗口名", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
关于cv2.namedWindow()参数的说明
from PIL import Image
picture = Image.open("01.jpg")
// 在win的环境下picture.show的方式为win自带的图像显示应用
picture.show()
关于PIL库的使用
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
picture = mpimg.imread('图片1.png')
plt.imshow(picture)
plt.axis('off') # 不显示坐标轴
plt.show()
以绘图的方式打开图片,仅能打开‘png’格式图片。
百度云官方文档
一个例子
百度云文字识别返回值为一个字典,字典中的‘words_result’值中包含识别的内容,而该值为一个元组,元组中每个元素记录了识别的一项结果(内容、可信度等)。
// 选择“w”形式打开一个文件
f = open("temp.txt", "w", encoding='utf-8')
// 写入一个字符串txt后换行
file.write(txt + '\n')
f.close()
将“图片”文件夹中所有图片的字符(包括汉字、英文、一些特殊符号)提取出来,存放在“语录.txtx”中。
//利用百度api实现图片文本识别
import os
from aip import AipOcr
// 百度云申请到的端口信息
APP_ID = '******'
API_KEY = '******'
SECRECT_KEY = '******'
client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
""" 如果有可选参数 """
options = {}
options["detect_direction"] = "false"
options["probability"] = "true"
f = open("语录.txt", "w", encoding='utf-8')
""" 读取图片(打开文件并判断是否为图片格式) """
for file_name in os.listdir("./图片"):
if(file_name.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg',
'.pbm','.pgm', '.ppm', '.tif', '.tiff'))):
image = open('./图片/' + file_name,'rb').read()
else:
continue
""" 带参数调用通用文字识别(高精度版) """
""" 参数options可缺省"""
result = client.basicAccurate(image, options)
print(result)
try:
for i in range(int(result['words_result_num'])):
txt = result['words_result'][i]['words']
print(txt)
if len(txt) > 2:
// 完成一次内容的写入并换行
f.write(txt +'\n')
except:
pass
f.close()
注:文件“语录.txt” 和 文件夹“图片”跟该代码在同一目录下。
原计划通过图片处理提取出特定的区域(小黑板上的内容),仅对该区域进行识别,避免其他因素的干扰(如背景中、衣服上的字符),但是因为目标轮廓检测方面遇到困难,取消了该环节。因此百度云的文字识别会将图片中的所有字符都提取出来。
另外在使用百度云时发现以下问题:
日月往
不可复追
日月既往
不可复追
猜测这个结果可能跟文字在图片中的比例有关。