opencv读写和保存中文路径图片及base64与图片互转
文章目录
- 1、opencv读取中文路径图片
- 2、opencv保存中文路径图片
- 3、图片转base64
- 4、base64转图片
有几点要注意
cv2.imread(filename,flags)
cv2.imwrite(filename,img)
cv2.imdecode(data,flags)
cv2.imencode(ext,img)
flags有几点(这里只列3点):
值 | 含义 | 数值 |
---|---|---|
cv2.IMREAD_UNCHANGED | 保持原格式不变 | -1 |
cv2.IMREAD_GRAYSCALE | 将图像调整为单通道的灰度图 | 0 |
cv2.IMREAD_COLOR | 将图像调整为三通道的BGR图像,默认是该值 | 1 |
1、opencv读取中文路径图片
import cv2
import numpy as npimg_data = np.fromfile(图片.jpg, np.uint8)
img = cv2.imdecode(img_data, -1) # 此法可读取中文路径图片,读取后为BRG模式
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
2、opencv保存中文路径图片
当然保存英文路径图片也是没有问题的
#此时的img需要是BGR格式
cv2.imencode('.jpg', img)[1].tofile(picPath+"test.jpg")
3、图片转base64
import base64
data1 = base64.b64encode(open('dog.jpg','rb').read())
#以下两种方法都行
#data2 = str(data1, encoding='utf-8')
data2 = data1.decode('utf-8')
data1是字节,data2是字符串,如果需要保存可以看以下保存和读取代码:
with open('test1.txt','wb') as f:f.write(data1)
with open('test2.txt','w') as f:f.write(data2)with open('test1.txt','rb') as f:data11 = f.read()
with open('test2.txt','r') as f:data22=f.read()
以上data1和data2都是正确的,但在前后端交互时,前端传来的数据是data2这种格式。
4、base64转图片
上文中data1和data2解码后结果相同
import base64
im1 = base64.b64decode(data1)
im2 = base64.b64decode(data2)
#im1==im2img11 = cv2.imdecode(np.asarray(bytearray(im1),dtype=np.uint8),-1)
img12 = cv2.imdecode(np.frombuffer(im1,dtype=np.uint8),-1)
np.testing.assert_almost_equal(img11,img12)img21 = cv2.imdecode(np.asarray(bytearray(im2),dtype=np.uint8),-1)
img22 = cv2.imdecode(np.frombuffer(im2,dtype=np.uint8),-1)np.testing.assert_almost_equal(img21,img22)
np.testing.assert_almost_equal(img11,img21)
#以上四行说明全部相同img4=cv2.imread('dog.jpg',-1)#读取原图方法1
np.testing.assert_almost_equal(img4,img11)
img5=cv2.imdecode(np.fromfile('dog.jpg',np.uint8),1)#读取原图方法2
np.testing.assert_almost_equal(img4,img5)
以上用不同的方式来读取图像,所得结果全部一样,得到图片,可以进行保存,有两种保存方式:
#第一种
cv2.imwrite('dog1.jpg',img11)
#第二种
with open('dog2.jpg','wb') as f:f.write(im2) #im1==im2的
opencv读写和保存中文路径图片及base64与图片互转相关推荐
- opencv-python(cv2)——如何读取和保存中文路径图片(含代码)
很多小伙伴在使用python的opencv(cv2)的时候,肯定都碰到过读取中文路径的图片失败的问题.因为直接使用 cv2.imread(filename)并不支持中文路径. 这边直接给出用cv2能够 ...
- cv2.imread无法读取/保存中文路径下的图片的解决方法
cv2.imread无法读取/保存中文路径下的图片的解决方法 关于无法读取 用cv2.imread读取中文路径下的图片会出现空.这种情况下windows会出现,mac好像还没出现过. 解决方法是,使用 ...
- opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径。
opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径 定义函数: cv2_imread(path)代替cv2.imread() cv2_im ...
- java Opencv保存中文路径的图片
opencv 通过Imgcodecs.imwrite()直接保存带有中文路径的图片会失败,需要转换为byteArray 再写入到路径中去 public static void imgWrite(fin ...
- 解决OpenCV不可以读取中文路径问题
使用OpenCV时读取中文路径时可能会出错 方法一:在代码最上方加入 # -*- coding: utf-8 -*- 很多博主介绍了这种方法,但这个方法不适用我的代码 方法二:进行unicode编码 ...
- uni-app 多端本地图片转base64 本地图片转base64
文章目录 uni 适配多端 本地图片转base64 函数 多端转换统一函数 使用 h5本地图片转base64 app本地图片转base64 微信小程序本地图片转base64 uni 适配多端 本地图片 ...
- Java生成并合并图片以及base64转图片
由于最近研究了下打码平台(验证码识别平台),但是像需要特殊说明的验证码(例如:只需要提取验证码中黄颜色的字符),就需要将说明 信息和验证码图片合成一张图片,然后在发送给打码平台才可以.所以,我就研究了 ...
- C#将文件(图片)与Base64字符串进行互转
一.需求说明 在项目的开发过程中,我们需要将指定的文件(图片)转为Base64字符串[比如在企业微信群中发送图片等];或将Base64字符串转为对应的图片保存,来进行相应的业务处理:实现我们想要的效果 ...
- mysql base64 图片php_php base64转图片
1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...
最新文章
- java linkedlist底层_手写Java LinkedList核心源码
- HBase in 2013
- 使用python操作hdfs,并grep想要的数据
- 计算机网络向用户提供的最重要的功能
- ili9341代码移植注意事项
- windows winrar 指令_【转】winrar命令行详解
- mysql5.7.17配置_mysql-5.7.17-winx64的安装配置
- 通过发声可以把杯子震碎吗?
- 启动redis闪退/失败
- java 抽象类和接口1--基本概念
- 你真的了解特洛伊木马吗!
- [七]JavaIO之 PipedInputStream 和 PipedInputStream
- html5 职工入职后台管理系统_【开源】Net平台的后台管理系统
- 怎么用谷歌或百度搜自己在csdn内的文章呢?
- AD快捷键的设置及推荐
- java 报表模版 打印_Java报表工具技巧--如何使用Style Report制作以及打印标签
- 50 链表排序(Sort List)
- 【避坑指南】Win7虚拟机中VMwareTools 安装报错问题解决
- ART虚拟机 | Cleaner机制源码分析
- C++实现快速打印乘法口诀表