windows Python opencv 中文路径乱码解决方法

一、Python2.7

方法1

# -*- coding: utf-8 -*-
import cv2

##############      步骤1      ################

import sys
if sys.getdefaultencoding()!='utf-8':
    reload(sys)#重载sys模块
    sys.setdefaultencoding('utf-8')#将默认编码改成utf-8

##############      步骤2      ################

path="C:/Users/53121/Desktop/图片1.jpg"#读入中文的图片路径
#读入图片
im=cv2.imread(path.encode('gbk'),'0')#将utf-8转为gbk
#保存图片
savepath='C:/Users/53121/Desktop/灰度化的图片1.jpg'
cv2.imwrite(path.encode('gbk'),im)#将utf-8转为gbk,不转不会报错,可是文件找不到它的保存路径

方法2

# -*- coding: utf-8 -*-
import cv2
# 转unicode再转gbk
im=cv2.imread(u'C:/Users/53121/Desktop/图片1.jpg'.encode('gbk'))
cv2.imshow('im',im)
cv2.waitKey(0)

二、Python3.6

import cv2
img_path='C:/Users/53121/Desktop/图片1.jpg'
im = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
cv2.imshow('im',im)
cv2.waitKey(0)
### Python OpenCV 中文字符显示解决方案 为了确保在使用 OpenCV 的 `putText` 函数时能够正确显示中文字符并避免乱码问题,建议采用以下方法: #### 方法一:使用 PIL 库转换图像 通过 Pillow (PIL) 库来处理带有中文的文字渲染,再将其转换回 OpenCV 支持的格式。这种方法能有效规避字体编码带来的兼容性问题。 ```python from PIL import Image, ImageDraw, ImageFont import numpy as np import cv2 def put_chinese_text(image_path, text, position): img_PIL = Image.open(image_path).convert('RGB') draw = ImageDraw.Draw(img_PIL) font = ImageFont.truetype("simhei.ttf", 40) draw.text(position, text, fill=(255, 255, 255), font=font) image_cv = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) return image_cv ``` 此代码片段展示了如何利用 Pillow 来加载图片、绘制文字以及最终转回到 OpenCV 图像对象[^1]。 #### 方法二:设置合适的字体文件路径 当直接调用 OpenCV 的 `putText()` 函数时,可以通过指定支持 UTF-8 编码的 TTF 字体文件来尝试解决问题。需要注意的是,并不是所有的操作系统都默认安装有适合用于显示汉字的 TrueType 字体文件;因此可能需要手动下载并提供具体的字体路径给函数参数中的 `fontFace` 参数。 ```python font = cv2.FONT_HERSHEY_SIMPLEX # 这里应该替换为实际存在的中文字体文件路径 cv2.putText(img, '你好', org, font, 1, color, thickness=cv2.LINE_AA) ``` 然而,在实践中发现这种方式对于某些版本的 OpenCV 及其编译配置来说效果不佳,可能会继续遇到乱码现象[^2]。 #### 安装最新版 OpenCV 和依赖包 有时旧版本可能存在 bug 或者缺少必要的功能特性,更新到最新的滚动发行版有助于获得更好的多语言支持体验。 ```bash pip install --upgrade opencv-python-headless opencv-contrib-python-headless ``` 上述命令会帮助获取包含更多特性和改进后的 OpenCV 版本,从而提高对非 ASCII 文字的支持能力[^3]。 #### 使用自定义模块或第三方库辅助 如果以上两种方式仍无法满足需求,则考虑引入专门针对此类场景设计的小型工具集或者框架作为补充方案。例如一些开发者分享了他们自己封装好的类库可以在 GitHub 上找到,这些资源往往已经过优化调整可以直接拿来即用[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值