OpenCV-Python:img不是一个numpy数组,也不是标量

时间:2017-08-01 14:35:54

标签: python image opencv cv2

我正在尝试编写保存图像功能。下面的代码应该创建原始图像的副本,如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

这里有什么需要改变的?

1 个答案:

答案 0 :(得分:3)

opencv是正确的,您保存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")

在这种情况下,它只会复制文件 - 无论其内容是什么 - 所以即使它是一个损坏的图像,或根本没有图像,它也会被复制。