《LearnPython-Python学习笔记》-OpenCV:cv2.imread()读取中文路径的图片

admin 2025-11-07 01:12:04 编程 来源:ZONE.CI 全球网 0 阅读模式
  • 参考代码
  • REF
    • 原代码
    • 解决方案

    参考代码

    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.pnghttps://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图片要改成uint16https://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)

    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  6