关于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了,并且该函数支持中文路径
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Python OpenCV读取中文路径图像的方法
引言 这几天做点小东西,涉及到OpenCV读取中文图像的问题 如果直接读取中文路径的图像,往往返回[] import cv2 cv_im = cv2.imread('老干妈.jpg') 缘起 偶然发现opencv 读取图像,解决imread不能读取中文路径的问题文章,代码简单有效,可以参考下文章底部附录 im = cv2.imdecode(np.fromfile(im_name,dtype=np.uint8),-1) 但是作者代码注释中说该方法读取的图像的通道就会变为RGB,但是我实验仍为BGR
-
解决python cv2.imread 读取中文路径的图片返回为None的问题
使用cv2读取图片时,输出图片形状大小时出现报错" 'NoneType' object has no attribute shape",后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取. 下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推. 使用PIL读取图像,能够成功读取图片,借此了解图片的大小和格式,代码如下图所示: cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,
-
OpenCV 使用imread()函数读取图片的六种正确姿势
经常看到有人在网上询问关于imread()函数读取图片失败的问题.今天心血来潮,经过实验,总结出imread()调用的四种正确姿势. 通常我要获取一张图片的绝对路径是这样做的:在图片上右键--属性--安全--对象名称.然后复制对象名称就得到了图片的绝对路径. 如图: 然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下: 可以看出我们获取的绝对路径的表示方法是单右斜线形式的.显然opencv的imread()不支持这种方式.但是!!!经过实验发现imread()除了不支持单右斜线形式,其他斜
-
关于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.imen
-
OpenCV读取与写入图片的实现
1.读取图片 cv2.imread(filename, flags) -filename: 文件名称 -flags: 0 读入灰度图片,1 读入彩色图片 cv2.imshow(winname, mat) -winname: 窗口名字 -mat: 要展示的图片矩阵 cv2.waitKey(0):暂停程序,这样才能显示图片 import cv2 img = cv2.imread("img.jpg", 1) cv2.imshow('img', img) cv2.waitKey(0) 2.图片
-
jquery.cookie() 方法的使用(读取、写入、删除)
一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件. <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="
-
Java读取、写入文件如何解决乱码问题
读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少
-
Java 是如何读取和写入浏览器Cookies的实例详解
首先我们认识下什么是cookies: cookie实际上是一个存在你硬盘里的数据,但是这些数据很特殊,只能由web应用提交给浏览器帮助存储,并且我们还能读取浏览器的cookie web应用一般只在cookie中存储一些用户信息等少量且暂时的数据,数据量大则不适合存储在cookies 一般浏览器对于每个web应用会分别给予他们40个cookie用来存储数据,并且每个cookie的大小不超过4K(听说部分浏览器的cookie能存很大的数据,不过我们一般不会存这么大的数据,因为数据提取的效率不高,影响
-
Android持久化技术之文件的读取与写入实例详解
本文实例分析了Android持久化技术之文件的读取与写入操作.分享给大家供大家参考,具体如下: 1.文件存储 (1)在Android的持久化技术中,文件存储是最基本的一种数据存储方式. (2)对存储的内容部做任何处理,原样存储到文件中. (3)Context提供了文件写入与读取的方法,openFileOutput:写入到文件:openFileInput:从文件中读取. (4)文件写入时模式有多种:比如是覆盖写入还是追加写入等. (5)写入的文件默认存储在/data/data/报名/files/目
-
Python基于csv模块实现读取与写入csv数据的方法
本文实例讲述了Python基于csv模块实现读取与写入csv数据的方法.分享给大家供大家参考,具体如下: 通过csv模块可以轻松读取格式为csv的文件,而且csv模块是python内置的,不需要下载就可以直接用. 一.准备csv文件 文件名是 e:\t.csv,文件内容: org_id,org_name,state,emp_id 1,销售1,'1',123 2,销售2,'0',321 3,销售3,'1',231 1,,'1',1234 二.读取csv数据 代码非常简单: # -*- coding
-
Java实现文件读取和写入过程解析
需求说明 实际操作过程中,从D盘根目录下的ak.txt读取文件写入D盘根目录下的hello.txt文件内 实现思路 写两个方法,一个用于读取目标文件,一个用于写入目标文件--详情见代码注释 代码内容 文件读取和写入练习 package com.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExce
-
Java利用POI读取、写入Excel的方法指南
前言 Apache POI [1] 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"Poor Obfuscation Implementation"的首字母缩写,意为"简洁版的模糊实现". 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里
随机推荐
- 什么是BNC接头
- IE浏览器增加“复制图像地址”的右键菜单的vbs代码
- 正则表达式regular expression详述(一)
- GSON实现Java对象与JSON格式对象相互转换的完全教程
- python 编程之twisted详解及简单实例
- 怎么发布打包并发布自己的Android应用(APP)
- 为什么Node.js会这么火呢?Node.js流行的原因
- jquery设置text的值示例(设置文本框 DIV 表单值)
- 利用Adodb.Stream制作彩色验证码
- MySQL递归查询树状表的子节点、父节点具体实现
- Javascript 原型和继承(Prototypes and Inheritance)
- JavaScript中将数组进行合并的基本方法讲解
- IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
- Jquery 跨域访问 Lightswitch OData Service的方法
- Javascript弹出窗口的各种方法总结
- Java函数式编程(四):在集合中查找元素
- Spring Batch入门教程篇
- 全面了解Nginx, WSGI, Flask之间的关系
- Android 反射注解与动态代理综合使用详解
- vue.js 双层嵌套for遍历的方法详解, 类似php foreach()