【实操之 图像处理与百度api-python版本】
1 cgg带你建个工程
如图 不然你的pip baidu-aip 用不了
先对图片进行一点处理
$ 灰度处理
$ 滤波处理
参考
import cv2
import os
def preprocess_images(input_folder, output_folder):
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 获取输入文件夹中所有图片的文件名
image_files = [f for f in os.listdir(input_folder) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]
# 初始化计数器
count = 1
for image_file in image_files:
# 构建完整的输入文件路径
input_path = os.path.join(input_folder, image_file)
# 读取图片
image = cv2.imread(input_path)
if image is None:
print(f"Warning: Unable to read image {input_path}")
continue
# 转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用高斯滤波去除噪声
blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)
# 构建输出文件名(如 a01.png)
output_file = f"a{count:02d}{os.path.splitext(image_file)[1]}"
output_path = os.path.join(output_folder, output_file)
# 保存处理后的图片到文件
cv2.imwrite(output_path, blurred_image)
# 打印处理结果
print(f"Processed {input_path} and saved as {output_path}")
# 增加计数器
count += 1
print("Processing complete.")
# 调用函数处理图片
input_folder = "C:\\Users\\Administrator\\Downloads\\ora"
output_folder = "C:\\Users\\Administrator\\Downloads\\pred"
preprocess_images(input_folder, output_folder)
然后再申请百度api
https://console.bce.baidu.com/ai/?_=1634647029968&fromai=1#/ai/ocr/overview/index
领 66
看文档,改代码
发现报错
pip install baidu-aip
pip install chardet
像我一样 setting 中 自己检查
识别代码
import os
from aip import AipOcr
""" 你的 APPID AK SK """ # 换自己的,包子
APP_ID = '11&&&&&&79'
API_KEY = 'lenZRk17s88888888888' # 换自己的,包子
SECRET_KEY = 'E7RjDl0L66666666…………………………' # 换自己的,包子
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取文件 """
# 假设您已经有一个OCR客户端实例,这里用伪代码表示
# client = YourOCRClientInitializer() # 替换为实际的OCR客户端初始化代码
def get_file_content(filePath):
with open(filePath, "rb") as fp:
return fp.read()
def char_change(data):
# 从字典中提取 'words_result' 列表
words_list = data.get('words_result', []) # 使用get方法以防'words_result'键不存在
# 提取单词并组合,同时处理可能的连字符
words = []
for result in words_list:
word = result.get('words', '') # 使用get方法以防'words'键不存在
# 根据需要移除连字符或其他不需要的字符
word = word.replace('-', '').replace(' ', '') # 也可以考虑移除空格
words.append(word)
# 使用空格或其他分隔符(如果需要的话)连接单词
# 在这个例子中,我们假设车牌号应该是连续的,所以不使用分隔符
combined_word = ''.join(words)
# 输出结果
print(combined_word)
def process_images_in_folder(folder_path, ocr_client):
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 检查文件扩展名,只处理图片文件
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')):
file_path = os.path.join(folder_path, filename)
# 读取图片内容
image_content = get_file_content(file_path)
# 调用OCR服务进行文字识别
# 注意:这里假设ocr_client有一个名为basicGeneral的方法来处理图片
# 并且该方法返回一个包含'words_result'键的字典
recognition_result = ocr_client.basicGeneral(image_content)
# 处理识别结果
char_change(recognition_result)
# 指定文件夹路径
folder_path = 'C:\\Users\\Administrator\\Downloads\\pred'
process_images_in_folder(folder_path,client)