【发布时间】:2022-10-19 15:16:20
【问题描述】:
我正在尝试使用 tensorflows 图像调整大小方法调整一些图像的大小。我有一个循环,我在其中加载图像,调整大小,然后尝试使用 cv2.imwrite() 将其写回。但是,它继续报错,这不是输出图像吗?这是我的代码:
j=0
for i in images:
skyr_img = imread(my_data_dir+'/'+str(i)) #converts image to an array
skyr_img=tf.image.resize(skyr_img,[171,256],antialias=True,method='bilinear')
print(skyr_img.shape,j)
cv2.imwrite(my_data_dir+'/train/img'+str(j),skyr_img)
j=j+1
这是我得到的错误:
(171, 256, 4) 0
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-49-80ea3aae6498> in <module>
4 skyr_img=tf.image.resize(skyr_img,[171,256],antialias=True,method='bilinear')
5 print(skyr_img.shape,j)
----> 6 cv2.imwrite(my_data_dir+'/train/img'+str(j),skyr_img)
7 j=j+1
error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'imwrite'
> Overload resolution failed:
> - img is not a numpy array, neither a scalar
> - Expected Ptr<cv::UMat> for argument 'img'
【问题讨论】:
-
tf.resize()返回一个张量。尝试使用.numpy()方法转换为 ndarray。 -
Ye, just run
cv2.imwrite(my_data_dir+'/train/img'+str(j),skyr_img.numpy()) -
这给了我一个不同的错误
error Traceback (most recent call last) <ipython-input-55-e9c38d709e28> in <module> 4 skyr_img=tf.image.resize(skyr_img,[171,256],antialias=True,method='bilinear') 5 print(skyr_img.shape,j) ----> 6 cv2.imwrite(my_data_dir+'/train/img'+str(j),skyr_img.numpy()) 7 j=j+1 error: OpenCV(4.6.0) /io/opencv/modules/imgcodecs/src/loadsave.cpp:730: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'imwrite_' -
试试:
cv2.imwrite(my_data_dir+'/train/img'+str(j) + '.png',skyr_img.numpy())或cv2.imwrite(my_data_dir+'/train/img'+str(j) + '.jpg',skyr_img.numpy()) -
好的,这次我得到了一个不同的错误:``` -------------------------- ------------------------------------- AttributeError Traceback(最近一次调用最后)<ipython-input- 12-ff4df430cfcc> in <module> 4 skyr_img=tf.image.resize(skyr_img,[171,256],antialias=True,method='bilinear') 5 skyr_img = skyr_img.numpy() ----> 6 cv2.imwrite (my_data_dir+'/train/img'+str(j)+'.png',skyr_img.numpy()) 7 j=j+1 AttributeError: 'numpy.ndarray' 对象没有属性'numpy'```
标签: python tensorflow