【问题标题】:Saving an image after tf.image.resize在 tf.image.resize 之后保存图像
【发布时间】: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) &lt;ipython-input-55-e9c38d709e28&gt; in &lt;module&gt; 4 skyr_img=tf.image.resize(skyr_img,[171,256],antialias=True,method='bilinear') 5 print(skyr_img.shape,j) ----&gt; 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


【解决方案1】:

如果您使用的是 colab,您可以使用以下命令将驱动器安装到 colab

from google.colab import drive
drive.mount('/content/drive', force_remount=True)

您可以使用将图像保存到驱动器

img = cv2.imread('/content/gold.jpeg')
resized_img = tf.image.resize(img, (1050, 1610)).numpy()
path ='/content/drive/MyDrive'
cv2.imwrite(os.path.join(path , 'fish.jpg'), resized_img)

请参阅此工作gist。谢谢你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多