2017-08-01 99 views
0

我试图写一个保存图像函数。预计下面的代码将创建原始图像的副本作为saved-test-image.jpg。OpenCV-Python:img不是一个numpy数组,既不是一个标量

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

行的执行给follwing回:

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

你应该首先'imread(..)'图像。 –

回答

1

那么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") 

在这种情况下,它会简单地复制文件 - 无论其内容是什么 - 所以即使是已损坏的图片,或根本不是图像,它会被复制。

+0

解决了这个问题。谢谢 – Andrea

相关问题