VS开发Python-OpenCV之如何加载中文路径数据

首先回顾上文留的问题:如何加载相对路径数据和中文路径数据?

相对路径好说,所相对的是执行.py文件目录为基准,用./表示当前目录 ../表示上一层目录,例如:

img = cv2.imread("../photo/ruiver.jpg")

该表示方法和Linux下的命令行表示是一样的

 

加载中文路径数据,我们采用模块化编程,新封装个可以读取中文路径数据的函数,首先我们补充几个知识点,

1、一个Python源码文件(.py)除了可以被直接运行外,还可以作为模块(也就是库),被其他.py文件导入;

2、不管是直接运行还是被导入,.py文件的最顶层代码都会被运行(Python用缩进来区分代码层次),从第一行开始逐行执行顶层代码;

3、if __name__ == "__main__",条件编译表示如果name是main函数时则表示程序的入口在此,__name__是内置变量,可用于表示当前模块的名字,其实if __name__ == "__main__"并没有什么实际作用,仅作为程序入口标识;

4、如果一个.py文件(模块)被直接运行时,则其没有包结构,其__name__值为__main__,即模块名为__main__‘;

 

如下是按照函数封装出来可以正常读取中文路径数据例子:

## 读取图像,解决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

#读取图像,支持 bmp、jpg、png、tiff 等常用格式

def main():
    path="../图片/ruiver.jpg"
    img = cv_imread(path)
    #创建窗口并显示图像
    cv2.namedWindow("Image",cv2.WINDOW_AUTOSIZE)
    cv2.imshow("Image",img)
    cv2.waitKey(0)
    #释放窗口
    cv2.destroyAllWindows()

if __name__=='__main__':
    main()  ##没有打包结构,表示此处为入口处

 

 

 

 

你可能感兴趣的:(Python,深度学习)