我有一台相机正在将图像数据发送到我的计算机。从那里我的 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
时间太长。
有没有办法让整个过程更快?
感谢您的回答!
最佳答案
试试这个:
frame[frame > 200] = 255
frame[frame <= 200] = 0
cv2.imshow("LiveVideo", frame)
关于python - 阈值图像数组和渲染的有效方法 - Python/NumPy/OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59072302/