参考代码

  1. import os
  2. import cv2
  3. def cv_imread(file_path):
  4. root_dir, file_name = os.path.split(file_path)
  5. pwd = os.getcwd()
  6. if root_dir:
  7. os.chdir(root_dir)
  8. cv_img = cv2.imread(file_name)
  9. os.chdir(pwd)
  10. return cv_img
  11. img = cv_imread(file_path)

REF

原代码

  1. import cv2
  2. image = cv2.imread("/Users/phoenix/Desktop/求关注.png")

解决方案

方法一:

  1. ## 读取图像,解决imread不能读取中文路径的问题
  2. def cv_imread(filePath):
  3. # 核心就是下面这句,一般直接用这句就行,直接把图片转为mat数据
  4. cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
  5. # imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
  6. # cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)
  7. return cv_img

方法二(失败):

  1. import cv2
  2. def cv_imread(file_path = ""):
  3. file_path_gbk = file_path.encode('gbk') # unicode转gbk,字符串变为字节数组
  4. img_mat = cv2.imread(file_path_gbk.decode()) # 字节数组直接转字符串,不解码
  5. return img_mat

image.png
https://www.codeleading.com/article/16535346440/
方法三:

  1. import cv2
  2. import numpy as np
  3. data = np.fromfile("/Users/phoenix/Desktop/求关注.png", dtype=np.uint8) #先用numpy把图片文件存入内存:data,把图片数据看做是纯字节数据
  4. image = cv2.imdecode(data, cv2.IMREAD_COLOR) #从内存数据读入图片

https://www.codeleading.com/article/21274770597/

  1. def cv_imread(file_path):
  2. cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
  3. return cv_img

读取tif图片要改成uint16
https://www.zhihu.com/question/67157462

  1. import cv2
  2. import matplotlib.pyplot as plt
  3. #构造一下
  4. def cv_img_rgb(path):
  5. #用matplotlib的路径
  6. img=plt.imread(path)
  7. #因为opencv读取是按照BGR的顺序,所以这里转换一下即可
  8. img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
  9. return img_rgb
  10. u_url=r"F:\3班毕业季视频素材\img\img2\JPEG\2.jpg"
  11. img=cv_img_rgb(u_url)
  12. cv2.imshow("picture",img)
  13. cv2.waitKey(0)
  14. 作者:云陨风方醒
  15. 链接:https://www.zhihu.com/question/67157462/answer/746834340
  16. 来源:知乎
  17. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  1. import os
  2. def cv_imread(file_path):
  3. root_dir, file_name = os.path.split(file_path)
  4. pwd = os.getcwd()
  5. if root_dir:
  6. os.chdir(root_dir)
  7. cv_img = cv2.imread(file_name)
  8. os.chdir(pwd)
  9. return cv_img
  10. 作者:CrazyLee
  11. 链接:https://www.zhihu.com/question/67157462/answer/522937881
  12. 来源:知乎
  13. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[

](https://www.zhihu.com/question/67157462/answer/251754530)