python OpenCV的imread不能读取中文路径问题及解决

目录
  • OpenCV的imread不能读取中文路径问题
  • OpenCV imread()函数 (从文件加载图像)

OpenCV的imread不能读取中文路径问题

import numpy as np
import cv2

cv_img = cv2.imdecode(np.fromfile(jpg_path, dtype=np.uint8), -1)  # 读取8位图像

OpenCV imread()函数 (从文件加载图像)

def imread(filename, flags=None): # real signature unknown; restored from __doc__
    """
    imread(filename[, flags]) -> retval
    .   @brief Loads an image from a file. 从文件加载图像。
    .
    .   @anchor imread
    .
    .   The function imread loads an image from the specified file and returns it. If the image cannot be
    .   read (because of missing file, improper permissions, unsupported or invalid format), the function
    .   returns an empty matrix ( Mat::data==NULL ).

		该函数imread从指定的文件加载图像并返回它。
		如果无法读取图像(由于缺少文件,权限不正确,格式不受支持或格式无效),
		该函数将返回一个空矩阵(Mat :: data == NULL)。
    .
    .   Currently, the following file formats are supported: 当前,支持以下文件格式:
    .
    .   -   Windows bitmaps - \*.bmp, \*.dib (always supported)
    .   -   JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Note* section)
    .   -   JPEG 2000 files - \*.jp2 (see the *Note* section)
    .   -   Portable Network Graphics - \*.png (see the *Note* section)
    .   -   WebP - \*.webp (see the *Note* section)
    .   -   Portable image format - \*.pbm, \*.pgm, \*.ppm \*.pxm, \*.pnm (always supported)
    .   -   PFM files - \*.pfm (see the *Note* section)
    .   -   Sun rasters - \*.sr, \*.ras (always supported)
    .   -   TIFF files - \*.tiff, \*.tif (see the *Note* section)
    .   -   OpenEXR Image files - \*.exr (see the *Note* section)
    .   -   Radiance HDR - \*.hdr, \*.pic (always supported)
    .   -   Raster and Vector geospatial data supported by GDAL (see the *Note* section)
    .
    .   @note
    .   -   The function determines the type of an image by the content, not by the file extension.
    		该功能通过内容而不是文件扩展名确定图像的类型

    .   -   In the case of color images, the decoded images will have the channels stored in **B G R** order.
    		对于彩色图像,解码后的图像将具有以** B G R **顺序存储的通道。

    .   -   When using IMREAD_GRAYSCALE, the codec's internal grayscale conversion will be used, if available.
    .   Results may differ to the output of cvtColor()
    		使用IMREAD_GRAYSCALE时,将使用编解码器的内部灰度转换(如果有)。 结果可能与cvtColor()的输出不同

    .   -   On Microsoft Windows\* OS and MacOSX\*, the codecs shipped with an OpenCV image (libjpeg,
    .   libpng, libtiff, and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs,
    .   and TIFFs. On MacOSX, there is also an option to use native MacOSX image readers. But beware
    .   that currently these native image loaders give images with different pixel values because of
    .   the color management embedded into MacOSX.

			在Microsoft Windows \ * OS和MacOSX \ *上,
			默认使用OpenCV映像附带的编解码器(libjpeg,libpng,libtiff和libjasper)。
			因此,OpenCV始终可以读取JPEG,PNG和TIFF。
			在MacOSX上,还可以选择使用本机MacOSX图像读取器。
			但是请注意,由于MacOSX中嵌入了色彩管理,当前这些本机图像加载器会为图像提供不同的像素值。

    .   -   On Linux\*, BSD flavors and other Unix-like open-source operating systems, OpenCV looks for
    .   codecs supplied with an OS image. Install the relevant packages (do not forget the development
    .   files, for example, "libjpeg-dev", in Debian\* and Ubuntu\*) to get the codec support or turn
    .   on the OPENCV_BUILD_3RDPARTY_LIBS flag in CMake.

			在Linux \ *,BSD版本和其他类似Unix的开源操作系统上,OpenCV会寻找OS映像随附的编解码器。
			安装相关的软件包(不要忘记在Debian \ *和Ubuntu \ *中忘记开发文件,
			例如“ libjpeg-dev”)以获得编码解码器支持或在CMake中打开OPENCV_BUILD_3RDPARTY_LIBS标志。

    .   -   In the case you set *WITH_GDAL* flag to true in CMake and @ref IMREAD_LOAD_GDAL to load the image,
    .   then the [GDAL](http://www.gdal.org) driver will be used in order to decode the image, supporting
    .   the following formats: [Raster](http://www.gdal.org/formats_list.html),
    .   [Vector](http://www.gdal.org/ogr_formats.html).

			如果您在CMake中将* WITH_GDAL *标志设置为true并使用@ref IMREAD_LOAD_GDAL加载图像,则将使用[GDAL](http://www.gdal.org)驱动程序对图像进行解码,以支持 以下格式:[Raster](http://www.gdal.org/formats_list.html)、[Vector](http://www.gdal.org/ogr_formats.html)。

    .   -   If EXIF information are embedded in the image file, the EXIF orientation will be taken into account
    .   and thus the image will be rotated accordingly except if the flag @ref IMREAD_IGNORE_ORIENTATION is passed.
			如果将EXIF信息嵌入到图像文件中,则将考虑EXIF方向,
			因此,除非传递了@ref IMREAD_IGNORE_ORIENTATION标志,否则图像将相应旋转。

	    .   -   Use the IMREAD_UNCHANGED flag to keep the floating point values from PFM image.
	    		使用IMREAD_UNCHANGED标志保留PFM图像中的浮点值。

    .   -   By default number of pixels must be less than 2^30. Limit can be set using system
    .   variable OPENCV_IO_MAX_IMAGE_PIXELS
    		默认情况下,像素数必须小于2 ^ 30。 可以使用系统变量OPENCV_IO_MAX_IMAGE_PIXELS设置限制
    .
    .   @param filename Name of file to be loaded. 要加载的文件名。
    .   @param flags Flag that can take values of cv::ImreadModes 可以采用cv :: ImreadModes值的标志
    """
    pass

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python中的imread()函数用法说明

    cv2方式: # -*- coding: UTF-8 -*- import cv2 """ cv2模块--图片的读入和显示 """ image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg" img=cv2.imread(image_path)# np.ndarray BGR uint8 cv2.imshow("test_imread",img)

  • 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函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,

  • 解决Python下imread,imwrite不支持中文的问题

    由以下函数代替该功能: def cv_imread(file_path): cv_img=cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1) return cv_img def cv_imwrite(filename,src): cv2.imencode('.jpg',src)[1].tofile(filename) 以上这篇解决Python下imread,imwrite不支持中文的问题就是小编分享给大家的全部内容了,希望能给大家一个参考

  • python OpenCV的imread不能读取中文路径问题及解决

    目录 OpenCV的imread不能读取中文路径问题 OpenCV imread()函数 (从文件加载图像) OpenCV的imread不能读取中文路径问题 import numpy as np import cv2 cv_img = cv2.imdecode(np.fromfile(jpg_path, dtype=np.uint8), -1) # 读取8位图像 OpenCV imread()函数 (从文件加载图像) def imread(filename, flags=None): # rea

  • python读取中文路径时出错(2种解决方案)

    编码问题可能导致python读取中文路径时出错 解决方法一:路径拆分单独编码 import os root_path = 'E:\\project\\sk_man-master\\SK\\static\\sk\\new_clothes\\'+u'裤子' for file in os.listdir(root_path): print file.decode('gbk') 方法二:对全部路径用unicode格式编码 root_path = unicode('E:\\project\\sk_man-

  • 基于python 处理中文路径的终极解决方法

    1 .据说python3就没有这个问题了 2 .u'字符串' 代表是unicode格式的数据,路径最好写成这个格式,别直接跟字符串'字符串'这类数据相加,相加之后type就是str,这样就会存在解码失误的问题. 别直接跟字符串'字符串'这类数据相加 别直接跟字符串'字符串'这类数据相加 别直接跟字符串'字符串'这类数据相加 unicode类型别直接跟字符串'字符串'这类数据相加 说四遍 3 .有些读取的方式偏偏是要读取str类型的路径,不是unicode类型的路径,那么我们把这个str.enco

  • 解决python3中cv2读取中文路径的问题

    如下所示: python3: img_path =  ' ' im = cv2.imdecode(np.fromfile(img_path,dtype = np.uint8),-1) save_path =  ' ' cv2.imencode('.jpg',im)[1].tofile(save_path) python2.7: img_path = ' ' im = cv2.imread(img_path.decode('utf-8')) 以上这篇解决python3中cv2读取中文路径的问题就是

  • OpenCV 使用imread()函数读取图片的六种正确姿势

    经常看到有人在网上询问关于imread()函数读取图片失败的问题.今天心血来潮,经过实验,总结出imread()调用的四种正确姿势. 通常我要获取一张图片的绝对路径是这样做的:在图片上右键--属性--安全--对象名称.然后复制对象名称就得到了图片的绝对路径. 如图: 然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下: 可以看出我们获取的绝对路径的表示方法是单右斜线形式的.显然opencv的imread()不支持这种方式.但是!!!经过实验发现imread()除了不支持单右斜线形式,其他斜

  • Python OpenCV超详细讲解读取图像视频和网络摄像头

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 1.读取图像调用imread()方法获取我们资源文件夹中的图片使用imshow()方法显示图片,窗口名称为OutputwaitKey(0)这句可以让窗口一直保持,如果去掉这句,窗口会一闪而过 我们来看下效果: 2.读取视频VideoCapture()方法的参数就是视频文件循环中通过read不断地去读视频的每一帧,再通过imshow显示出来最后if语句代表按q可以退出程

  • Python OpenCV实现图片上输出中文

    OpenCV中在图片上输出中文一般需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件.但使用FreeType需要下载库并重新编译,过程麻烦一点. 在Python中,可以借助PIL(Python Imaging Library)模块实现,相对简单很多,需要做的只是对图像进行OpenCV格式和PIL格式的相互转换. # -*- coding: utf-8 -*- import cv2 import numpy

随机推荐