当使用cv2.imread(file)读取图片一直读取不了就要看看file路径是否存在中文了,今天写了的代码,用cv2.imread()读取图片路径一直报错,试了很多种方法,结果是中文出错了。
使用Opencv库倒入cv2包:import cv2
解决方法1:把文件路径里的文件名里带中文的全改为英文
#只使用前三个参数cv2.warpAffine(img,M,(rows,cols)),出现黑边
import cv2
img=cv2.imread(r'C:\Users\zhu18\Pictures\CameraRoll\Progress\face1.jpg')
import numpy as np
M=np.float32([[1,0,25],[0,1,50]])
shifted_img=cv2.warpAffine(img,M,(img.shape[1],img.shape[0]))
cv2.imshow('Shifted',shifted_img)
print(type(img))
执行结果图:
#只使用前三个参数cv2.warpAffine(img,M,(rows,cols)),出现黑边
import cv2
img=cv2.imread(r'C:\Users\zhu18\Pictures\Camera Roll\Progress\示例2.jpg')
import numpy as np
M=np.float32([[1,0,25],[0,1,50]])
shifted_img=cv2.warpAffine(img,M,(img.shape[1],img.shape[0]))
cv2.imshow('Shifted',shifted_img)
print(type(img))
报错,错误提示:
读取图片时发生异常,一切都是中文路径惹的祸,编程还是一切以英文为主比较好,免得出错。解决方法2如下:
import cv2
import numpy as np
#img=cv2.imread(r'C:\Users\zhu18\Pictures\Camera Roll\Progress\示例2.jpg')
img = cv2.imdecode(np.fromfile(r'C:\Users\zhu18\Pictures\Camera Roll\Progress\示例2.jpg', dtype=np.uint8), 1)
M=np.float32([[1,0,25],[0,1,50]])
shifted_img=cv2.warpAffine(img,M,(img.shape[1],img.shape[0]))
cv2.imshow('Shifted',shifted_img)
print(type(img))
完美运行,图片成功显示,借助于numpy来读入数据,然后cv2.imdecode()把数据转换(解码)成图像。