基于paddleClas对图像判断文字方向

获得判断后的角度,再对图像进行旋转

import cv2
import paddleclas
import time
import logging
import numpy as np
from ppocr.utils.logging import get_logger

logger = get_logger()

img = './PaddleClas/f6cc8c263ed546c793d310335381e0fc.jpeg'
img = './PaddleClas/d7b28b45f4ce4848b524e78744b88862.jpeg'
img = './PaddleClas/dc475c9b472941f394b2ec9f27a03db7.jpeg'
img = './PaddleClas/f9ec3f3ad9f14152abfa39b61ea50e7a.jpeg'
img = './PaddleClas/58cd2e4230f14777ac457c39740b5f8c.jpeg'
img = './PaddleClas/f9844506a175409a9b06b27a075e665b.jpeg'

image_orientation_predictor = paddleclas.PaddleClas(model_name="text_image_orientation")
cls_result = image_orientation_predictor.predict(input_data=img)
tic = time.time()
cls_res = next(cls_result)
logger.info('text_image_orientation save to {}'.format(cls_res))
# [{'class_ids': [0, 1], 'scores': [0.79156, 0.08451], 'label_names': ['0', '90'], 'filename': 'bda44a8b260d4e0a8ec956756e246a5c.png'}
angle = cls_res[0]['label_names'][0]
cv_rotate_code = {
    '90': cv2.ROTATE_90_COUNTERCLOCKWISE,
    '180': cv2.ROTATE_180,
    '270': cv2.ROTATE_90_CLOCKWISE
}
toc = time.time()
print('image_orientation', toc - tic)

logger.info('angle1 {}'.format(cv_rotate_code))
# angle1 {'90': 2, '180': 1, '270': 0}
if angle in cv_rotate_code:
    img_np = cv2.imread(img)
    logger.info('angle {},{}'.format(angle,cv_rotate_code[angle]))
    rotated_img = cv2.rotate(img_np, cv_rotate_code[angle])
    cv2.imshow('Rotated Image', rotated_img)  
    cv2.waitKey(0)  
    cv2.destroyAllWindows()

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我的回答有误。以下是一个基于PaddleClas的图像分类模型训练代码示例: ```python import paddle import paddle.vision.transforms as T from paddle.vision.datasets import ImageNet from paddle.static import InputSpec from paddle.metric import Accuracy from paddle.optimizer import Momentum from paddle.regularizer import L2Decay from paddleslim.nas.ofa import OFA # 定义数据增强 train_transforms = T.Compose([ T.Resize(256), T.RandomCrop(224), T.RandomHorizontalFlip(), T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) val_transforms = T.Compose([ T.Resize(256), T.CenterCrop(224), T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 加载训练数据集和测试数据集 train_dataset = ImageNet(mode='train', transform=train_transforms) val_dataset = ImageNet(mode='val', transform=val_transforms) # 定义模型 model = OFA('ofa_mbv3_d234_e346_k357_w1.0', pretrained=True) model = paddle.Model(model, inputs=[InputSpec([None, 3, 224, 224], 'float32', 'image')], labels=[InputSpec([None, 1], 'int64', 'label')]) # 定义优化器和学习率衰减策略 optimizer = Momentum(learning_rate=0.1, momentum=0.9, weight_decay=L2Decay(1e-4)) lr_scheduler = paddle.optimizer.lr.StepDecay(learning_rate=0.1, step_size=30, gamma=0.1) # 定义损失函数 criterion = paddle.nn.CrossEntropyLoss() # 开始训练 model.prepare(optimizer, criterion, Accuracy()) model.fit(train_dataset, val_dataset, epochs=90, batch_size=256, save_dir='ofa_mbv3_d234_e346_k357_w1.0', save_freq=5, log_freq=10, lr_scheduler=lr_scheduler) ``` 这个示例代码基于PaddleClas的OFA模块,可以使用不同的网络结构、参数数量和计算复杂度进行训练,以适应不同的硬件和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值