【问题标题】:OpenCV - Saving images to a particular folder of choiceOpenCV - 将图像保存到选择的特定文件夹
【发布时间】:2017-05-25 23:33:16
【问题描述】:

我正在学习 OpenCV 和 Python。我从网络摄像头捕捉了一些图像并保存了它们。但它们默认保存到本地文件夹中。我想将它们从直接路径保存到另一个文件夹。我如何解决它?

【问题讨论】:

  • 请发布您的错误代码,以免我们猜出问题所在
  • 我要注意的是,您可能需要创建要保存图像的文件夹(即它必须存在),否则调用imwrite时将没有任何反应。

标签: python opencv image-processing


【解决方案1】:

ebeneditos 提供的解决方案完美运行。

但是,如果您在大型代码 sn-p 的多个部分中有 cv2.imwrite(),并且您想更改保存图像的路径,则必须在每次出现 cv2.imwrite() 时单独更改路径。

正如 Soltius 所说,这是一种更好的方法。声明一个路径并将其作为字符串传递给cv2.imwrite()

import cv2
import os
img = cv2.imread('1.jpg', 1)
path = 'D:/OpenCV/Scripts/Images'
cv2.imwrite(os.path.join(path , 'waka.jpg'), img)
cv2.waitKey(0)

现在如果要修改路径,只需更改path 变量即可。

根据 Kallz 提供的解决方案进行编辑

【讨论】:

    【解决方案2】:

    你可以用OpenCV的函数imwrite来做到这一点:

    import cv2
    cv2.imwrite('Path/Image.jpg', image_name)
    

    【讨论】:

    • 甚至更好的做法是将路径声明为字符串变量,以防您想更改它并且使用了一堆 imwrite()s。
    • 此代码无法在 Windows 10 上运行。我已经对其进行了测试。文件夹没有被创建,我的意思是名为“路径”的文件夹,你能说出原因吗?
    • @Shahryar cv2.imwrite() 如果文件夹不存在,则不会创建该文件夹。您必须检查文件夹是否存在以及是否写入,否则使用 os.makedir() 创建它
    【解决方案3】:

    Jeru Luke 给出的答案仅适用于 Windows 系统,如果我们尝试在其他操作系统 (Ubuntu) 上运行,则它可以正常运行,但图像会保存在目标位置或路径上。 p>

    不能在 Ubuntu 中工作而在 Windows 中工作

      import cv2
      img = cv2.imread('1.jpg', 1)
      path = '/tmp'
      cv2.imwrite(str(path) + 'waka.jpg',img)
      cv2.waitKey(0)
    

    我运行上面的代码,但图像没有将图像保存在目标路径上。然后我发现添加路径的方式对于我们使用OS模块添加路径的通用目的是错误的。

    例子:

     import os
     final_path = os.path.join(path_1,path_2,path_3......)
    

    在 Ubuntu 和 Windows 中工作

     import cv2
     import os
     img = cv2.imread('1.jpg', 1)
     path = 'D:/OpenCV/Scripts/Images'
     cv2.imwrite(os.path.join(path , 'waka.jpg'),img)
     cv2.waitKey(0)
    

    该代码在 Windows 和 Ubuntu 上都能正常工作 :)

    【讨论】:

    • 为这一见解加 1 分,不要不提 :)
    • 对 ubuntu 用户非常有用。但是当我不得不简单地使用final_dir/ 时,我将path 提供为~/.../.../src/final_dir/ 浪费了一些时间。
    【解决方案4】:

    谢谢大家。你的方法很完美。我想分享另一种我用来解决问题的方法。我使用函数os.chdir(path) 将本地目录更改为路径。之后我正常保存了图像。

    【讨论】:

      【解决方案5】:

      您可以通过递增计数在循环中使用这个简单的代码。

      cv2.imwrite("C:\\path\\where you\\want to save\\frame%d.jpg" % count, image)
      

      图像将按名称行frame0.jpgframe1.jpgframe2.jpg 等保存在文件夹中。

      【讨论】:

        【解决方案6】:

        如果您使用的是 open cv,则适用于 MAC 用户

        import cv2
        
        cv2.imwrite('path_to_folder/image.jpg',image)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-03
          • 1970-01-01
          • 1970-01-01
          • 2018-02-18
          • 2018-07-30
          • 1970-01-01
          相关资源
          最近更新 更多