实际上根据我的经验,对一般的程序,如果不是C++编程功底足够好,或者matlab水平足举模够烂,是很难做到C程序比Matlab程序快的。
OpenCV打开摄像头延迟大可能有以下几个原因:
摄像头硬件问题:摄像头硬件问题可能导致图像采集速度梁答慢,从而导致OpenCV打开橡码慧摄像头时延迟较大。可以尝试更换摄像头或检查摄像头连接。
图像采集参数设置问题:OpenCV打开摄像头时需要设置一些图像采集参数,如帧率、分辨模脊率等。如果参数设置不合理,可能会导致延迟较大。可以尝试调整参数设置。
系统资源占用问题:在使用OpenCV打开摄像头时,可能会同时运行其他占用大量系统资源的程序,如游戏、视频播放器等,导致系统资源不足,从而导致OpenCV打开摄像头时延迟较大。可以尝试关闭其他占用系统资源的程序。
OpenCV版本问题:OpenCV版本不同,在打开摄像头时的实现方式也有所不同,不同的实现方式可能会导致延迟较大。可以尝试更新或降级OpenCV版本。
需要根据具体情况进行排查。
登录首页
学习
实践
活动
专区
工具
TVP
返回腾讯云官网
Python()和read()函数太慢( OpenCV )
原文
dwiandhika提问于2021-01-22
python
opencv
optimization
我想循环某个范围内的帧,并将其附加到一个数组中。问题是,它太慢了。我已经检查了函数需要多长时间,我认答洞为这相当慢。下面是我当前的代码:
imgs = []
for j in range(range1, range2):
video.set(cv.CAP_PROP_POS_FRAMES, j)
ret, frame = video.read()
imgs.append(frame)
复制
我也清厅枯尝试过用video.retrieve(video.grab())替换imgs.append(frame),但性能并没有太大差别。有没有更好的解决方案/替代方案来完成这段代码的工作?
浏览 72关注 0得票数 1
原文
2 个回答
*** 作
Ian Chu已采纳
回答于2021-01-22
得票数 2
哦,哇,nvm。正是这个设伏晌置让这个过程变得很慢:
内部时间: 15.308052062988281
课外时间: 0.4459998607635498
import cv2
import time
def setInside(cap, start, end):
imgs = []
for a in range(start, end):
cap.set(cv2.CAP_PROP_POS_FRAMES, a)
_, frame = cap.read()
imgs.append(frame)
def setOutside(cap, start, end):
imgs = []
cap.set(cv2.CAP_PROP_POS_FRAMES, start)
for a in range(start, end):
_, frame = cap.read()
imgs.append(frame)
# open vidcap
cap = cv2.VideoCapture("202534.avi")
# bounds
start = 0
end = 2000
# time it
start_time = time.time()
setInside(cap, start, end)
print("Inside Time: " + str(time.time() - start_time))
start_time = time.time()
setOutside(cap, start, end)
print("Outside Time: " + str(time.time() - start_time))
复制
如果你把set移到循环之前,速度会快很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)