加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

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

发布时间:2023-07-01 13:24:09 所属栏目:语言 来源:
导读:这篇文章将为大家详细讲解有关“opencv读写路径有中文的情况怎样处理的”的知识,下文有详细的介绍,小编觉得挺实用的,对大家学习或工作或许有帮助,因此分享给大家做个参考,希望大家阅读完这篇文章后可

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

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!