文章目录

  • 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与图片互转相关推荐

  1. opencv-python(cv2)——如何读取和保存中文路径图片(含代码)

    很多小伙伴在使用python的opencv(cv2)的时候,肯定都碰到过读取中文路径的图片失败的问题.因为直接使用 cv2.imread(filename)并不支持中文路径. 这边直接给出用cv2能够 ...

  2. cv2.imread无法读取/保存中文路径下的图片的解决方法

    cv2.imread无法读取/保存中文路径下的图片的解决方法 关于无法读取 用cv2.imread读取中文路径下的图片会出现空.这种情况下windows会出现,mac好像还没出现过. 解决方法是,使用 ...

  3. opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径。

    opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径 定义函数: cv2_imread(path)代替cv2.imread() cv2_im ...

  4. java Opencv保存中文路径的图片

    opencv 通过Imgcodecs.imwrite()直接保存带有中文路径的图片会失败,需要转换为byteArray 再写入到路径中去 public static void imgWrite(fin ...

  5. 解决OpenCV不可以读取中文路径问题

    使用OpenCV时读取中文路径时可能会出错 方法一:在代码最上方加入 # -*- coding: utf-8 -*- 很多博主介绍了这种方法,但这个方法不适用我的代码 方法二:进行unicode编码 ...

  6. uni-app 多端本地图片转base64 本地图片转base64

    文章目录 uni 适配多端 本地图片转base64 函数 多端转换统一函数 使用 h5本地图片转base64 app本地图片转base64 微信小程序本地图片转base64 uni 适配多端 本地图片 ...

  7. Java生成并合并图片以及base64转图片

    由于最近研究了下打码平台(验证码识别平台),但是像需要特殊说明的验证码(例如:只需要提取验证码中黄颜色的字符),就需要将说明 信息和验证码图片合成一张图片,然后在发送给打码平台才可以.所以,我就研究了 ...

  8. C#将文件(图片)与Base64字符串进行互转

    一.需求说明 在项目的开发过程中,我们需要将指定的文件(图片)转为Base64字符串[比如在企业微信群中发送图片等];或将Base64字符串转为对应的图片保存,来进行相应的业务处理:实现我们想要的效果 ...

  9. mysql base64 图片php_php base64转图片

    1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...

最新文章

  1. java linkedlist底层_手写Java LinkedList核心源码
  2. HBase in 2013
  3. 使用python操作hdfs,并grep想要的数据
  4. 计算机网络向用户提供的最重要的功能
  5. ili9341代码移植注意事项
  6. windows winrar 指令_【转】winrar命令行详解
  7. mysql5.7.17配置_mysql-5.7.17-winx64的安装配置
  8. 通过发声可以把杯子震碎吗?
  9. 启动redis闪退/失败
  10. java 抽象类和接口1--基本概念
  11. 你真的了解特洛伊木马吗!
  12. [七]JavaIO之 PipedInputStream 和 PipedInputStream
  13. html5 职工入职后台管理系统_【开源】Net平台的后台管理系统
  14. 怎么用谷歌或百度搜自己在csdn内的文章呢?
  15. AD快捷键的设置及推荐
  16. java 报表模版 打印_Java报表工具技巧--如何使用Style Report制作以及打印标签
  17. 50 链表排序(Sort List)
  18. 【避坑指南】Win7虚拟机中VMwareTools 安装报错问题解决
  19. ART虚拟机 | Cleaner机制源码分析
  20. C++实现快速打印乘法口诀表

热门文章

  1. 四六级考试公众号图文排版攻略
  2. Maya菜单、快捷键、拓扑使用
  3. jsp会员卡vip消费管理系统
  4. EDIUS中的滚动字幕是怎么制作的
  5. Labview与单片机进行串口通信
  6. win7计算机没有显示移动硬盘,win7电脑不认移动硬盘该怎么办
  7. Nios II软件开发流程简介(含工程)
  8. 腾讯乘车码公众号裂变涨粉实操案例分析!
  9. 2022-2027年(新版)中国生物化工行业发展动态及前景预测报告
  10. C# 将小写数字转换为 一般中文大写数字 和 人民币大写数字