Пользовательское имя для изображения opencv (сложное имя)

#python #opencv #operating-system

#python #opencv #операционная система

Вопрос:

привет, я хочу взять кадр с камеры и сохранить его в папке «изображения», я хочу, чтобы у изображения было имя текущее timestamp .jpg , Я получаю сообщение об ошибке при вводе его следующим образом:

 cv2.imwrite(os.path.join(path2 , rn), img)
  

где path2='images'
и rn=str(rightnow.strftime("%I:%M:%p"))
я получаю эту ошибку : could not find a writer for the specified extension in function 'cv::imwrite_'

как я могу это сделать, пожалуйста, я искал, но не нашел ответа, и я новичок в python, заранее спасибо

Ответ №1:

Принятый ответ является os конкретным.

Что произойдет, если вы запустите код в Windows?

Предположим, у вас есть миллионы кода, собираетесь ли вы изменять каждую косую / черту?

Вы должны использовать os.path.sep вместо статического объявления косой черты.

  • Во-первых, удалите : in strftime , вы можете использовать - или _ или ничего.

    •  rn = str(rightnow.strftime("%I%M%p"))
        
  • Во-вторых, проверьте, существует ли путь, если он не существует, создайте.

    •  path3 = "".join([path2, os.path.sep, rn])
      
      if not os.path.exists(path3):
          os.mkdir(path3)
        
  • В-третьих, создайте имя изображения

    •  save = "".join([path3, os.path.sep, "image_name.png"])
        
    • Если вы выполняете инструкцию внутри цикла, вы можете использовать counter

      •  counter  = 1
        save = "".join([path3, os.path.sep, "image_name{}.png".format(counter)])
          

Код:


 import os
import cv2
from datetime import datetime

path2 = 'img2'
rightnow = datetime.now()
rn = str(rightnow.strftime("%I%M%p"))
img = cv2.imread("1.png")

path3 = "".join([path2, os.path.sep, rn])

if not os.path.exists(path3):
    os.mkdir(path3)

save = "".join([path3, os.path.sep, "image_name.png"])

cv2.imwrite(save, img)
  

Ответ №2:

Попробуйте изменить:

 cv2.imwrite(os.path.join(path2 , rn), img)
  

Для

 cv2.imwrite(os.path.join(path2 , rn) ".jpg", img)