opencv程序很慢,比matlab的代码还慢。

opencv程序很慢,比matlab的代码还慢。,第1张

OpenCV里的数学运算反而是其软肋。matlab是专业的数值计算工具,其内核岁答宽是blas库,最NB的C线性代数库;而OpenCV的数学计算却没有用blas,所以只慢不快乎亮。

实际上根据我的经验,对一般的程序,如果不是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移到循环之前,速度会快很多。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12334532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存