Python OpenCV imwrite 0字节图像取决于执行目录

时间:2017-10-22 12:10:56

标签: python opencv

我写了一个小脚本将RGB图像转换为灰色。 当我以终端形式当前目录(python3 image.py)运行脚本时,它完全正常。

但是当我从像python3 proc/image.py这样的目录中朗读它时,它会创建一个0字节大小的结果图像。

这是代码image.py

import os
import numpy as np
import cv2

def sw(name):
    dir_path = os.path.dirname(os.path.realpath(__file__))
    img_path = os.path.join(dir_path, name)
    print(img_path)
    img = cv2.imread(name, 0)
    rslt_path = os.path.join(dir_path, "schwarn_g.jpeg")
    print(rslt_path)
    cv2.imwrite(rslt_path, img)
    return img


if __name__ == "__main__":
    sw('schwarn.jpeg')

有人可以解释这种行为吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

您正在使用以下行打开要处理的image

img = cv2.imread(name, 0)

由于您的script始终使用此行调用function

sw('schwarn.jpeg')

您总是试图从运行img同一目录中打开schwarn.jpgscript。您os.path加入的所有内容都会影响grayscale图像的输出位置 - 而不是原始图像的读取位置。

这意味着,由于该计划尝试在您运行img的同一directory中打开script,因此img只能 < / strong>在与script相同的目录中运行img时加载。因此,当您尝试在另一个script中运行directory时,无法读入img并且生成的greyscale图片没有内容...