当前位置: 首页 > news >正文

解决opencv中文路径问题

见cv_imread函数和cv_imwrite函数

import cv2
import os
import matplotlib.pyplot as plt
from paddleocr import PaddleOCR, draw_ocr
import numpy as np
import urllib.parse  # Add this import statement

from txt_get import ImageTextExtractor

# 初始化OCR,OCR会自动下载PP-OCRv3检测器、识别器和角度分类器
ocr = PaddleOCR(use_angle_cls=True)

# 指定输出路径和字体路径
# out_path = './output_images'  #这里不用out_path了,直接在detect_and_save_people里用output_dir
font = './doc/fonts/simfang.ttf'
font = r'C:\Windows\Fonts\simfang.ttf'  # 修改为绝对路径,并且确定字体存在

def cv_imread(file_path):
    # 使用 np.fromfile 读取文件字节流
    file_bytes = np.fromfile(file_path, dtype=np.uint8)
    # 使用 cv2.imdecode 解码图像
    img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
    return img

def cv_imwrite(file_path, img):
    """
    使用 cv2.imencode 和 Python 内置的文件写入支持中文文件名保存图像
    """
    ext = os.path.splitext(file_path)[1]
    result, encoded_img = cv2.imencode(ext, img)
    if result:
        with open(file_path, 'wb') as f:
            f.write(encoded_img.tobytes())
    else:
        raise Exception("图像编码失败")

def detect_and_save_people(image_path, output_dir):
    """
    检测图像中的文本,如果包含"xxx"关键词,则保存图像到指定路径。
    """
    try:
        extractor = ImageTextExtractor()
        extracted_text = extractor.extract_text(image_path)
        if extracted_text:
            print(f"从图像中提取到的文本:{extracted_text}")
            if "xxx" in extracted_text:
                print(f"检测到“xxx”关键词,保存图片: {image_path}")
                # 创建输出目录 (如果不存在)
                if not os.path.exists(output_dir):
                    os.makedirs(output_dir)
                # 构建输出文件名
                filename = os.path.basename(image_path)
                output_path = os.path.join(output_dir, filename)  # Use original filename without URL encoding
                # 复制图片
                cv2_img = cv_imread(image_path)
                cv_imwrite(output_path, cv2_img)  # Use cv_imwrite instead of cv2.imwrite
            else:
                print(f"未检测到“xxx”关键词: {image_path}")
        else:
            print(f"未检测到文本: {image_path}")
    except Exception as e:
        print(f"处理图像 {image_path} 时发生错误: {e}")

def process_directory(root_dir, output_dir):
    """
    递归处理指定目录下的所有图像,检测图像中是否包含"xxx"关键词,如果包含则保存图像到指定路径。
    """
    for dirpath, dirnames, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):  # 检查文件是否是图像
                image_path = os.path.join(dirpath, filename)
                detect_and_save_people(image_path, output_dir)

if __name__ == '__main__':
    # 使用示例
    root_dir = 'xxx'  # 替换为你的根目录
    output_dir = 'xxx'  # 替换为你想要保存图像的目录

    process_directory(root_dir, output_dir)

相关文章:

  • 力扣热题100刷题day63|49.字母异位词分组
  • Windows 图形显示驱动开发-WDDM 1.2功能_WDDM 1.2 和 Windows 8
  • Uniapp Vue 实现当前日期到给定日期的倒计时组件开发
  • 8.4 容器2
  • 尼日利亚拉各斯云服务器和VPS的综合分析,涵盖其优势、价格、推荐服务商及选择建议
  • 大模型论文:Language Models are Unsupervised Multitask Learners(GPT2)
  • netstat 查看端口占用、杀死进程
  • JAVA实现在H5页面中点击链接直接进入微信小程序
  • 课堂总结。
  • edge 更新到135后,Clash 打开后,正常网页也会自动跳转
  • 微服务拆分的原则、时机、方法以及常见问题
  • C++中stack函数的用法示例
  • 大模型——Llama Stack快速入门 部署构建AI大模型指南
  • 探索 Vue 3 中 vue-router 的 router.resolve () API
  • Python编程快速上手 让繁琐工作自动化笔记
  • 身份证号实名认证接口:让身份核验变得简单与高效
  • VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问
  • BUUCTF-web刷题篇(21)
  • 3.8/Q1,GBD数据库最新文章解读
  • CLAHE算法介绍
  • wordpress付费下载主题/seo排名点击软件运营
  • angularjs做网站/吉安seo
  • 服饰营销型网站建设/网络新闻发布平台
  • 查询网站服务器提供商/在线企业管理培训课程
  • 做亚马逊联盟一定要有网站吗/网站测试的内容有哪些
  • 佛山企业网站建设平台/软文经典案例