【发布时间】:2020-03-23 03:12:28
【问题描述】:
我有一台正在将图像数据发送到我的计算机的相机。从那里我的 python 脚本将 8 位颜色信息(黑白;范围从 0 - 黑色 - 到 255 - 白色)放入一个 numpy 数组中。数组是二维的,第一维最大为 384,第二维最大为 288 用 openCV 窗口显示这个效果很好,实时视频超过 24fps。
我现在的目标是处理图像,以便实时视频将任何低于 200 的颜色值显示为 0(全黑),将任何高于 200 的颜色值显示为 255(全白)。但是,我现在的代码只给了我大约 3fps。
我的代码正在执行以下操作:
- 将来自相机的图像保存在一个 numpy 数组中
- 打开第一个
for循环以遍历 x 值 - 在第一个
for循环中使用 y 值遍历第二个for循环 - 检查每个像素的每个颜色值,并检查它是否高于 200
- 根据
if子句将颜色值设为0 或255 - 显示新图像
这是代码中的决定性部分:
processedImage = frame
i = 0
for i in range(0, displayedWidth):
ii = 0
for ii in range(0, displayedHeight):
if frame[ii, i] > 200:
processedImage[ii, i] = 255
else:
processedImage[ii, i] = 0
cv2.imshow("LiveVideo", processedImage)
我读到here 说for 循环比while 循环快,但它并没有显着提高代码的速度,这就是为什么我认为processedImage 的重写需要太长时间。
有没有办法让整个过程更快?
感谢您的任何回答!
【问题讨论】:
标签: python arrays performance loops numpy