- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我尝试使用 opencv 和 python 从网络摄像头获取图像。代码非常基本,例如:
import cv2
import time
cap=cv2.VideoCapture(0)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,640)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,480)
cap.set(cv2.cv.CV_CAP_PROP_FPS, 20)
a=30
t=time.time()
while (a>0):
now=time.time()
print now-t
t=now
ret,frame=cap.read()
#Some processes
print a,ret
print frame.shape
a=a-1
k=cv2.waitKey(20)
if k==27:
break
cv2.destroyAllWindows()
但它运行缓慢。程序输出:
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
HIGHGUI ERROR: V4L: Property <unknown property string>(5) not supported by device
8.82148742676e-06
select timeout
30 True
(480, 640, 3)
2.10035800934
select timeout
29 True
(480, 640, 3)
2.06729602814
select timeout
28 True
(480, 640, 3)
2.07144904137
select timeout
配置:
最佳答案
在使用 OpenCV 处理视频流时获得更高 FPS 的“秘诀”是将 I/O(即从相机传感器读取帧)移动到一个单独的线程。
当调用 read()
方法和 cv2.VideoCapture
函数时,整个过程非常慢,因为它必须等待每个 I/O 操作完成完成以继续下一个 ( Blocking Process )。
为了实现 FPS 增加/延迟减少,我们的目标是将帧读取从网络摄像头或 USB 设备转移到完全不同的线程,与我们的主要 Python 脚本完全分开。
这将允许从 I/O 线程连续读取帧,同时我们的根线程处理当前帧。一旦根线程处理完它的帧,它只需要从 I/O 线程获取当前帧。这是在无需等待阻塞 I/O 操作的情况下完成的。
您可以阅读 Increasing webcam FPS with Python and OpenCV了解实现线程的步骤。
编辑
根据我们评论中的讨论,我觉得您可以按如下方式重写代码:
import cv2
cv2.namedWindow("output")
cap = cv2.VideoCapture(0)
if cap.isOpened(): # Getting the first frame
ret, frame = cap.read()
else:
ret = False
while ret:
cv2.imshow("output", frame)
ret, frame = cap.read()
key = cv2.waitKey(20)
if key == 27: # exit on Escape key
break
cv2.destroyWindow("output")
关于python - BeagleBone Black OpenCV Python 太慢了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37169517/
我正在尝试学习 React.JS,但有些事情让我大吃一惊。 我有这个标题组件: class Header extends Component { render() { return ;
我正在尝试学习 React.JS,但有些事情让我大吃一惊。 我有这个标题组件: class Header extends Component { render() { return ;
我有一个 Cordova iPhone 应用程序,它使用状态栏插件。状态栏的背景设置为黑色,而文本曾经是白色。但是自从插件从0.1.3版本升级到0.1.8之后,文字变成了黑色。 是否可以恢复旧行为,或
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Difference between Color.red and Color.RED 我看到 Java 类
基于poetry docs : Likewise if you have command line tools such as pytest or black youcan run them usin
我正在使用 Shadowbox.js example code显示带有消息“此站点仍在 build 中!”的阴影框在页面加载时: Shadowbox.init({ // let's sk
我注意到 eclipse 有一个奇怪的行为? 我有一个静态变量: public static colorID = R.color.Black; 有时它与 R.color.Black 匹配: if(co
我正在尝试通过运行Windows 7的笔记本电脑通过腻子将SSH连接到Beaglebone Black。 打开BBB的电源并在Windows上安装所需的BBB驱动程序后,我可以在Chrome浏览器中浏
我正在尝试评估颜色选择器选择的颜色的暗度,看它是否“太黑”,如果是,则将其设置为白色。我想我可以使用十六进制值的第一个字符来实现这一点。它在工作,但它也在切换一些合法的“浅色”颜色。 我有以下代码:
我无法弄清楚为什么下面的代码中有一个黑色矩形,据我所知,隐藏选项留下了一些东西,但我不知道如何隐藏它或更改它颜色。 这是什么以及我们如何操纵它? Select flow slides
我昨天买了 beaglebone black 并尝试使用 USB 连接它。正如我所读到的那样,它预装了运行在 192.168.7.2 的 Linux Distro,我们可以使用 ssh 访问它。但我无
我们目前正在为 BeagleBone Black 开发一个应用程序(使用标准的 Angstrom 发行版)。它在 GDB(由 Netbeans 远程控制)下运行了一段时间(5-10 分钟),但在某个相
Arial Black网路安全吗? 我已经读过它,但是当我将其放入字体声明中时,就得到了Times New Roman的支持。 有人知道为什么吗? 最佳答案 根据代码样式字体调查(实际上可能是最好的估
假设你有一个 red-black tree这是一个有效的 binary search tree并且不违反任何这些规则: 节点是红色或黑色。 根是黑色的。 所有叶子 (NIL) 都是黑色的。 每个红色节
我想在 Jenkins 共享库中实现黑色扫描仪。这个想法是,当库看到 pyproject.toml 时,它将执行黑色检查。该命令设置为 black --check ./ 。这将为所有项目设置一次,因此
我想在 3D 绘画工具上构建撤消/重做功能。每次绘制后我将纹理存储在一个数组中,如下所示: var image3 = mesh.material.map.image;
所以我有一个红黑树如下: 2 = Root Black Children = 1 (Black/Left), 4 (Red/Right) Children of 1 = NIL & NIL => He
我不太确定如何解决。所以我正在编程 blackJack 并且我有我的函数声明(如图所示),对于我的 add_card_to_hand 函数,我不知道该怎么做。我有 2 个参数,一手牌是我通过引用传递的
这个问题在这里已经有了答案: Disable Visual Studio 2015 extra debug option (5 个答案) 关闭 6 年前。 因此,每当我尝试在 Visual Stud
自动视差 AndEngine给出黑屏。 public class MainActivity extends SimpleBaseGameActivity { static final int
我是一名优秀的程序员,十分优秀!