如何使字符串成为原始字符串文字,以便我可以 运行 cv2.imread() ?
How do I make the string a raw string literal so that I can run cv2.imread() on it?
one = (r"C:\Users\Sam\OneDrive\Desktop\RateData")
for feature in features[0]:
backslash = '\'
imagePath = ((one)+backslash+"'"+str(feature)+"'")
img = cv2.imread(imagePath)
print(imagePath)
print(img)
所以print(imagePath)
的结果是:
C:\Users\Sam\OneDrive\Desktop\RateData\'1.1.jpg'
print(img)
的结果是:None
feature
只是图像文件名。我是这样写的,所以它会将唯一的图像文件名添加到路径中。
所以我通过 cv2.imread()
函数尝试 运行 并返回 None
。
我知道它不会 运行 的原因是它只是将它作为字符串读取,而不将其识别为原始字符串文字。我不是一个非常有经验的程序员,所以我尝试了所有我能想到的方法(不是很多)让它以原始字符串文字的形式读取路径,但它没有用。因此,如果你们中的任何人可以帮助我将字符串变成那样,那就太棒了!
感谢您的帮助!
So the result of "print(imagePath) is: C:\Users\Sam\OneDrive\Desktop\RateData\'1.1.jpg
几乎可以肯定,您在 RateData
目录中没有名为 '1.1.jpg
的文件。虽然 Windows 确实允许文件名中包含 apostrophe/single-quote 个字符,但我无法想象您会故意在那里使用一个字符。所以,它可能被命名为 1.1.jpg
?
我也不确定你是如何从代码中得到那个字符串的……但没关系。
你让这一切变得比它必须的要难得多。无需担心路径分隔符被正确转义和引用,或任何您尝试做的事情。
Python 附带 os.path
模块,用于执行与路径相关的操作。所以就用它吧:
for feature in features[0]:
imagePath = os.path.join(one, str(feature))
img = cv2.imread(imagePath)
print(imagePath)
print(img)
或者,因为我打赌 feature
已经是一个字符串,所以更简单:
imagePath = os.path.join(one, feature)
或者,如果您更喜欢面向对象的 API,Python 也带有 pathlib
:
one = pathlib.Path(one)
for feature in features[0]:
imagePath = one / feature
img = cv2.imread(str(imagePath))
print(imagePath)
print(img)
我不知道 cv2
是否支持路径库,但如果支持,您可以直接执行 cv2.imread(imagePath)
。 (如果你想使用 pathlib
,一定要试试看,因为它显然更具可读性。)
one = (r"C:\Users\Sam\OneDrive\Desktop\RateData")
for feature in features[0]:
backslash = '\'
imagePath = ((one)+backslash+"'"+str(feature)+"'")
img = cv2.imread(imagePath)
print(imagePath)
print(img)
所以print(imagePath)
的结果是:
C:\Users\Sam\OneDrive\Desktop\RateData\'1.1.jpg'
print(img)
的结果是:None
feature
只是图像文件名。我是这样写的,所以它会将唯一的图像文件名添加到路径中。
所以我通过 cv2.imread()
函数尝试 运行 并返回 None
。
我知道它不会 运行 的原因是它只是将它作为字符串读取,而不将其识别为原始字符串文字。我不是一个非常有经验的程序员,所以我尝试了所有我能想到的方法(不是很多)让它以原始字符串文字的形式读取路径,但它没有用。因此,如果你们中的任何人可以帮助我将字符串变成那样,那就太棒了!
感谢您的帮助!
So the result of "print(imagePath) is: C:\Users\Sam\OneDrive\Desktop\RateData\'1.1.jpg
几乎可以肯定,您在 RateData
目录中没有名为 '1.1.jpg
的文件。虽然 Windows 确实允许文件名中包含 apostrophe/single-quote 个字符,但我无法想象您会故意在那里使用一个字符。所以,它可能被命名为 1.1.jpg
?
我也不确定你是如何从代码中得到那个字符串的……但没关系。
你让这一切变得比它必须的要难得多。无需担心路径分隔符被正确转义和引用,或任何您尝试做的事情。
Python 附带 os.path
模块,用于执行与路径相关的操作。所以就用它吧:
for feature in features[0]:
imagePath = os.path.join(one, str(feature))
img = cv2.imread(imagePath)
print(imagePath)
print(img)
或者,因为我打赌 feature
已经是一个字符串,所以更简单:
imagePath = os.path.join(one, feature)
或者,如果您更喜欢面向对象的 API,Python 也带有 pathlib
:
one = pathlib.Path(one)
for feature in features[0]:
imagePath = one / feature
img = cv2.imread(str(imagePath))
print(imagePath)
print(img)
我不知道 cv2
是否支持路径库,但如果支持,您可以直接执行 cv2.imread(imagePath)
。 (如果你想使用 pathlib
,一定要试试看,因为它显然更具可读性。)