关于opencv读取和写入路径有汉字的处理方式,


目录
  • opencv读取和写入路径有汉字的处理
    • 读取图片
    • 写入图片
  • opencv的imread不支持中文路径问题
    • 实现很简单

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了,并且该函数支持中文路径

以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

您可能感兴趣的文章:
  • Python OpenCV读取中文路径图像的方法
  • 解决python cv2.imread 读取中文路径的图片返回为None的问题
  • OpenCV 使用imread()函数读取图片的六种正确姿势

评论关闭