关于opencv读取和写入路径有汉字的处理方式
更新时间:2022年07月14日 09:49:56 作者:AI浩
这篇文章主要介绍了关于opencv读取和写入路径有汉字的处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
opencv读取和写入路径有汉字的处理
读取图片
img_gt = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1) img_gt = cv2.cvtColor(img_gt, cv2.IMREAD_COLOR)
写入图片
write_path=f'{save_dir}/{imgname}.jpg' cv2.imencode('.jpg', output)[1].tofile(write_path) # 保存图片
C++版本
#include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include "opencv2/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include <opencv2/highgui/highgui_c.h> using namespace cv; int main() { std::string image_path = samples::findFile("D:\\素材\\1.png"); Mat img = imread(image_path, IMREAD_COLOR); imshow("src", img);//原图像 waitKey(0); }
opencv的imread不支持中文路径问题
其实严格来说,不是imread不支持中文路径,而是不支持non-ascii。所以不论路径如何转换编码格式,应该都不能解决问题。
解决的思路就是先用其他支持中文的API,把图片数据导入到内存中,然后通过opencv从内存读入图片的方法,读入图片。
实现很简单
import cv2 import numpy as np def readimg(filename, mode): raw_data = np.fromfile(filename, dtype=np.uint8) #先用numpy把图片文件存入内存:raw_data,把图片数据看做是纯字节数据 img = cv2.imdecode(raw_data, mode) #从内存数据读入图片 return img
这个函数就可以代替opencv的imread了,并且该函数支持中文路径
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Python基础 while循环与break、continue关键字
今天再带着大家讲述一下while循环。那么for循环和while循环,到底有什么区别呢?下面文章就来详细介绍,感兴趣的小伙伴可以参考一下2021-10-10centos+nginx+uwsgi部署django项目上线
本文主要介绍了centos+nginx+uwsgi部署django项目上线,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-07-07Python+Matplotlib绘制高亮显示饼图的示例代码
饼图 (Pie Chart) 是一种圆形统计图,被分割成片用于表示数值间的比例关系,本文为大家介绍了Matplotlib绘制高亮显示的饼图的函数源码,需要的可以参考一下2023-06-06
最新评论