首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -> OpenCV ->保存一幅图像和结束程序

Python -> OpenCV ->保存一幅图像和结束程序
EN

Stack Overflow用户
提问于 2019-02-17 16:23:14
回答 2查看 1.7K关注 0票数 0

我有一个RaspberryPi,几个IP摄像头,我想从所有这些摄像头的每5分钟获得一个新的图像。我有以下脚本,打开RTSP提要af抓取图像的所有时间,它运行每秒10-25。

有没有办法打开录像带,只拍一张照片?

代码语言:javascript
复制
import cv2
import time
cap = cv2.VideoCapture('rtsp://192.168.86.81:554/11') # it can be rtsp or http $

ret, frame = cap.read()
while ret:
    cv2.imwrite('images/{}.jpg'.format(time.time()), frame)
    ret, frame = cap.read()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-18 00:14:24

这解决了我的问题。我删除了时间,因为我不需要这个。我将保留the代码,以防有人想玩这个游戏。

代码语言:javascript
复制
import cv2
cap = cv2.VideoCapture('rtsp://192.168.86.81:554/11') # it can be rtsp or http stream

ret, frame = cap.read()

if cap.isOpened():
    _,frame = cap.read()
    cap.release() #releasing camera immediately after capturing picture
    if _ and frame is not None:
        cv2.imwrite('images/latest.jpg', frame)
票数 0
EN

Stack Overflow用户

发布于 2020-05-04 03:37:46

代码语言:javascript
复制
import cv2
import time
from datetime import datetime
import getpass

#imagesFolder = "C:/Users/<user>/documents"

# https://stackoverflow.com/questions/842059/is-there-a-portable-way-to-get-the-current-username-in-python
imagesFolder = "C:/Users/" + getpass.getuser() + "/documents"

#cap = cv2.VideoCapture("rtsp://192.168.86.81:554/11")

# Use public RTSP Streaming for testing, but I am getting black frames!
cap = cv2.VideoCapture("rtsp://192.168.86.81:554/11")
frameRate = cap.get(5) #frame rate
count = 0


while cap.isOpened():
    start_time = time.time()

    frameId = cap.get(1)  # current frame number
    ret, frame = cap.read()

    if (ret != True):
        break

    filename = imagesFolder + "/image_" + str(datetime.now().strftime("%d-%m-%Y_%I-%M-%S_%p"))  + ".jpg"
    cv2.imwrite(filename, frame)

    # Show frame for testing
    cv2.imshow('frame', frame)
    cv2.waitKey(1)

    count += 1

    #Break loop after 5*60 minus
    if count > 5*60:
        break

    elapsed_time = time.time() - start_time

    # Wait for 60 seconds (subtract elapsed_time in order to be accurate).
    time.sleep(60 - elapsed_time)


cap.release()
print ("Done!")

cv2.destroyAllWindows()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54731397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档