使用python中cv2读取带中文路径的图片失败,解决办法如下:
附带resize使用
Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
(1) src:原图片
(2)dsize:缩放图片尺寸,如果dsize=0,默认计算方式如下dsize=Size(round(fx∗src.cols),round(fy∗src.rows))
(3)fx fy和dsize不能同时为0 fx,fy分别是在x,y轴上的缩放系数,默认取0时,fx=(double)dsize.width/src.cols ,fy=(double)dsize.height/src.cols,默认参数为0可以不写如里面
(4)interpolation :差值方式使用默认即可 默认的是INTER_LINEAR - a bilinear interpolation (used by default)现行差值
# -*- coding: utf-8 -*-
import cv2
import numpy as np
## 读取图像,解决imread不能读取中文路径的问题
def cv_imread(filePath):
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
## 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)
cv2.waitKey(0)
##这样是保存到了和当前运行目录下
cv2.imencode('.jpg', img)[1].tofile('百合.jpg')
info = img.shape#获取图像的尺寸
height = info[0]
width = info[1]
dstH = int(height * 0.25)
dstW = int(width * 0.25)
mRes = cv2.resize(img, (dstW, dstH), 0, 0)
cv2.imwrite("D:/img_resize.jpg", mRes)
参考: