opencv-python读写含中文的路径

本文介绍了解决OpenCV在处理中文路径图片读写时遇到的问题,使用np.fromfile和cv2.imdecode替代imread,cv2.imencode和tofile替代imwrite,有效解决了中文路径下的读写难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

opencv-python常规读写图片的代码是:

import cv2
image = cv2.imread('test.png', cv2.IMREAD_UNCHANGED)
cv2.imwrite('save_test.png', image)

但是cv2.imreadcv2.imwrite无法读写含中文的路径。

  • imread在读取不成功的情况下不报错,而是返回一个NoneType对象。这导致了程序虽然在imread的时候不会崩掉,但是后续处理时往往会崩,并且由于崩溃之处并非真正的原因,原因在imread这里,所以假如我们不了解imread这个特点的话,会给程序调试带来一些麻烦。
  • imwirte在保存不成功的情况下也不报错,而是返回False。如果不是在imread这里碰到了坑,顺藤摸瓜深入了解了一下imwrite,还真不知道imwrite是有返回值的,imwrite的帮助文档(help(cv2.imwrite),版本4.2.0)甚至都没有任何关于返回值的说明。这个特点虽然通常不会给程序带来崩溃,但是想一下,如果我们费了老大的劲写好程序(但是习惯性没有对cv2.imwrite的返回值做检查),晚上挂机跑图片,结果白天过来一看,因为中文路径的问题没有保存成功,那酸爽。。。

下面代码可以解决这个问题:

import cv2
image = cv2.imdecode(np.fromfile('中文图片.png'), cv2.IMREAD_UNCHANGED)
cv2.imencode('.png', image)[1].tofile('保存_中文图片.png')

我们一般比较关心读图的效率,经老夫的G4560+7200转希捷机械盘测试,这种读图方式与cv2.imread相比只是略微有一点点的效率降低。用两种方式分别对同一张图读取10000次,结果表明cv2.imdecodecv2.imread慢了1%左右,多次测试结果均是如此。
cv2.imencode第一个参数是图片格式,以后缀名的方式体现,后缀名需要加点。该函数返回值有两个,第一个是bool类型的值,第二个才是图片数据。

### 解决方案 在 Windows 命令行中使用 `pip` 安装 `opencv-python` 时遇到 `Fatal error in launcher: Unable to create process using...` 的错误,通常是因为 Python 环境配置不正确或者依赖项缺失引起的。以下是详细的分析和解决方案: #### 1. **确认 Python 和 pip 版本** 确保当前使用Python 和 pip 是最新版本。可以运行以下命令来更新它们: ```bash python -m ensurepip --upgrade python -m pip install --upgrade pip setuptools wheel ``` 如果仍然存在旧版的 pip 或者环境变量未正确设置,则可能导致此问题[^1]。 #### 2. **更换国内镜像源** 由于网络原因,国外官方 PyPI 源可能不稳定,建议切换至阿里云或其他国内镜像源以提高下载速度并减少失败概率。可以通过以下方式永久更改 pip 配置文件中的索引地址为阿里云镜像源: ```bash pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ ``` 临时指定镜像源也可以通过如下命令实现: ```bash pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com ``` #### 3. **清理缓存重试** 有时本地缓存损坏也会引发此类错误,尝试清除 pip 缓存后再执行安装操作: ```bash pip cache purge pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com ``` #### 4. **验证路径权限** 该错误还可能是由写入权限不足引起。请检查是否有足够的权限访问目标目录以及存储包的位置。如果是 Conda 环境下发生类似情况,可参照调整 pkgs 文件夹读写属性的方法解决[^1]。 #### 5. **手动下载 whl 文件安装** 当以上方法均无法解决问题时,可以从 [Unofficial Windows Binaries for Python Extension Packages](https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv) 下载适合系统的预编译二进制 `.whl` 文件,并利用 pip 手动完成安装过程: ```bash cd C:\path\to\downloaded\file\ pip install opencv_python‑<version>‑cpXX‑none‑win_amd64.whl ``` 注意替换 `<version>` 及具体 CPU 架构信息匹配实际需求。 --- ### 示例代码片段 下面展示如何快速切换到清华源并测试安装 OpenCV-Python 是否成功: ```python import cv2 print(cv2.__version__) ``` 若能正常打印出版本号则说明安装无误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值