#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
вместо статического объявления косой черты.
-
Во-первых, удалите
:
instrftime
, вы можете использовать-
или_
или ничего.-
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)