原地址:https://blog.csdn.net/liuqinshouss/article/details/78696032

1 说明

本篇中使用的opencv版本为3.3,python使用的版本为3.6。

2.问题描述

本人小白一枚,由于毕业论文做图像识别方面的内容,所以最近才开始学习python,老师指导我用opencv做图片去噪处理,所以最近才知道opencv是干嘛用的,opencv才安装好,想尝试一下简单的使用opencv读取、显示和存储一个图片。然而一开始就给了我一个下马威。

开始代码如下,只涉及到图片的读取和显示:

 # -*- coding: utf- -*-
import cv2
if __name__=='__main__':
path='E:/毕业设计/images/百合1.jpg'
img=cv2.imread(path,)
cv2.namedWindow(image,cv2.WINDOW_AUTOSIZE)
cv2.imshow(image,img)
k=cv2.waitKey()

运行后报了这个错误:

  1.  cv2.imshow('image',img)
  2.  cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:325: error: (-215) size.width>0 && size.height>0 in function cv::imshow

百度了一下:原因是因为文件路径错误,未读取到图片。但是我反复确认我的图片路径没有错误,所以想到会不会是中文的字符编码问题导致读取不到图片,于是我在D盘下放了一张英文命名的图片,就修改了代码的path改为‘D:/ Hydrangeas.jpg’,再次运行上述代码,结果如下:

成功读取并显示,则表明我的猜想是正确的,是因为路径的中文编码导致图片读取不成功。

3.解决办法

但是可惜的是,小白我并没有解决办法,于是又问度娘,寻找python3中opencv读取中文名称的解决办法。

最后在一个知乎的问答中找到了答案:

链接如下:https://www.zhihu.com/question/67157462/answer/251754530

我尝试了,果然能成功读取中文路径与中文名称的图片,事实证明该方法是正确的。然而这位答主的回答居然没有赞,我果断的给她点了个赞,不知为何题主竟然都没赞。

然后又在另一个知乎问答下发现了另一个,包括opencv读取和存储中文名称和路径的方法:

附上链接:https://www.zhihu.com/question/47184512

尝试后,果然都是对的,感谢知乎,感谢两位大佬!

附上我修改后的代码:

 # -*- coding: utf- -*-
import cv2
import numpy as np
## 读取图像,解决imread不能读取中文路径的问题
def cv_imread(filePath):
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-)
## imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
##cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)
return cv_img
if __name__=='__main__':
path='E:/images/百合/百合1.jpg'
img=cv_imread(path)
cv2.namedWindow('lena',cv2.WINDOW_AUTOSIZE)
cv2.imshow('lena',img)
k=cv2.waitKey()
##这样是保存到了和当前运行目录下
cv2.imencode('.jpg', img)[].tofile('百合.jpg')

opencv_python使用cv2.imread()读取中文路径报错问题(转)的更多相关文章

  1. opencv读取中文路径报错的问题

    ) ## 经验证,不需要再转bgr,myImread的读图结果已经是和imread一样的 return img

  2. python:pycharm中使用pandas读取中文路径报错问题的解决方案

    假如你的文件路径名是这样的,例如:test.csv 只要它是小文件(大文件采用分块读取,后续会补上文件分块读取的相关博客),你的内存扛得住,那就直接 import pandas as pd test ...

  3. python2含有中文路径报错解决办法[\xe4\xbf\xa1\xe6\x81\xaf]

    如图所示 百度的解决办法大多数是针对python3版本的,在脚本开头加# -*- coding:utf-8 -*-,但是python2版本加了编码格式,还是报错,具体解决办法是:path =unico ...

  4. 前端工具-gulp-ruby-sass-解决带有中文路径报错(incompatible character encodings GBK and UTF-8)

    注意:错误提示真的是非常重要的!!! 今天 gulp 一个外国人的项目时编译 sass 时提示 Encoding::CompatibilityError: incompatible character ...

  5. python 读取配置文件总是报错 configparser.NoSectionError: No section:

    本文为作者原创,禁止转载,违者必究法律责任!!! python 读取配置文件总是报错 configparser.NoSectionError: No section: 无论是 python2的版本,还 ...

  6. 记一次 Hibernate 插入数据中文乱码报错解决

    错误描述 程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 ...

  7. pod导入融云路径报错解决办法

    build Settings中搜索sear Search Patchs下点开Library Search Paths 将$(inherited)"$(SRCROOT)/Pods"分 ...

  8. vue项目打包后一片空白及资源引入的路径报错解决办法

    网上很多说自己的VUE项目通过Webpack打包生成的list文件,放到HBulider打包后,通过手机打开一片空白.这个主要原因是路径的问题. 1.记得改一下config下面的index.js中bu ...

  9. webstorm中sass编译时目录或内容包含中文字符报错

    ruby版本:ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32] sass版本:Sass 3.4.22 (Selective Steve) ...

随机推荐

  1. 手动添加ceph的mds

    1.在需要安装的目标机器上创建mds目录 mkdir -p / 2.生成mds的keyring,并将其写入/var/lib/ceph/mds/ceph-0/keyring文件中 ceph auth g ...

  2. O_DIRECT方式读取文件示例

    #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h& ...

  3. java软件托盘显示中文出现框框乱码

    目录 文章背景 目录 问题的代码 解决办法 说明 参考文章 版本记录 文章背景 测试代码时候突然发现代码运行时候的托盘菜单的名字显示异常,查询了下资料发现是运行参数的缘故. 目录 问题的代码 系统是w ...

  4. python 函数星号参数说明

    转自: python 函数参数的传递(参数带星号的说明) python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何 ...

  5. Reconstruction(三维重建)文件被修改

    修改内容: 该函数被修改了一部分,然后修改中止了,可能是牵一发而动全身,导致中止.无论什么原因,这个Reconstruction.cpp文件是唯一被修改的文件了.如果没有被修改该多好!!!!!! 如何 ...

  6. java爬虫入门

    本文内容 涞源于  罗刚 老师的 书籍 << 自己动手写网络爬虫一书 >> ; 本文将介绍 1: 网络爬虫的是做什么的?  2: 手动写一个简单的网络爬虫; 1: 网络爬虫是做 ...

  7. javascript高级程序设计读书笔记----严格模式

    ECMAScript5最早引入“严格模式". 使用 "use strict"开启严格模式 function test(){ "use strict"; ...

  8. Android-ListView-ArrayAdapter

    我在上一篇博客中Android-动态添加控件到ScrollView,写到可以用Java动态添加控件到Scrollview的孩子LinearLayout里面去,这种方式是不合理的,因为这种方式是一次性把 ...

  9. eclipse可以调试但是无法打开网页,提示一直在加载

    工作过程中遇到了eclipse调试可以正常执行,也没有报错,但是通过浏览器打开网页就是打不开,还提示一直加载.这个问题找了很多网页和搜索引擎,大多数的方法就是重新配置elipse里的tomcat的we ...

  10. Transaction And Lock--已提交读快照

    --===================================================== --行版本控制已提交读ALTER DATABASE DB5 SET READ_COMMI ...