opencv读写路径有中文的情况怎样处理的

Admin 2022-11-28 群英技术资讯 350 次浏览

这篇文章将为大家详细讲解有关“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了,并且该函数支持中文路径


“opencv读写路径有中文的情况怎样处理的”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业技术相关的知识可以关注群英网络网站,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: opencv读写路径

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服