3

我正在尝试编写保存图像功能。下面的代码预计将创建原始图像的副本作为 saved-test-image.jpg。

originalImage = "test-image.jpg"
savedImage = cv2.imwrite("saved-test-image.jpg",originalImage)

这些行的执行给出了以下结果:

Traceback (most recent call last):
  File "UnitTest.py", line 159, in test_save_and_delete_image
    savedImage = cv2.imwrite('unittest-images/saved-test-image.jpg', originalImage)
TypeError: img is not a numpy array, neither a scalar

这里需要改变什么?

4

1 回答 1

6

好吧opencv,你 save 是对的originalImage,但originalImage它是一个字符串(文件名,你的第一行)。

您需要先将cv2.imread(..)您的图像放入一个 numpy 数组中:

originalImage = cv2.imread("test-image.jpg")
savedImage = cv2.imwrite("saved-test-image.jpg",originalImage)

但是,如果您只是想复制图像文件,则无需将其加载到内存中,您可以简单地复制文件,而无需使用 opencv:

from shutil import copyfile

originalImage = "test-image.jpg"
copyfile(originalImage,"saved-test-image.jpg")

在这种情况下,它只会复制文件——不管它的内容是什么——所以即使它是损坏的图像,或者根本不是图像,它也会被复制。

于 2017-08-01T14:38:14.540 回答