阈值图像数组和渲染的有效方法-Python / NumPy / OpenCV - python

我有一台相机正在将图像数据发送到我的计算机。从那里,我的python脚本将8位颜色信息(黑白;范围从0-黑色-255-白色)放入numpy数组。数组为2D,第一维最大为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)

numpy.savetxt“元组索引超出范围”? - python

我试图在文本文件中写几行,这是我使用的代码:import numpy as np # Generate some test data data = np.arange(0.0,1000.0,50.0) with file('test.txt', 'w') as outfile: outfile.write('…

numpy loadtxt单行/行作为列表 - python

我只有一个数据文件,例如: 1.2 2.1 3.2 我使用numpy版本1.3.0 loadtxt加载它 a,b,c = loadtxt("data.dat", usecols(0,1,2), unpack=True) 输出是浮点数而不是数组 a = 1.2 我希望它将是: a = array([1.2]) 如果我读取了多行文件,则该文件…

Python / Scipy过滤器离散化 - python

我目前正在尝试从Matlab转向Python,并在多个方面取得了成功。但是,我经常使用的Matlab信号处理工具箱中的一个函数是impinvar函数,用于从其模拟版本计算数字滤波器。在Scipy.signal中,我仅发现bilinear函数可以执行类似的操作。但是,与Matlab bilinear function相比,它不需要可选参数来对频率进行一些预变形…

设置Jupyter笔记本电脑的最大内核数 - python

我与同事共享一台计算机。他们在那里运行并行计算,我需要运行Jupyter。我可能只使用几个核心,而不是全部。但是,每次运行在Jupyter中使用numpy的单元时,它都会尝试使用尽可能多的内核。在运行同事的计算时,Python占用了一半的内核。我试图将Jupyter进程的nice设置为19,以便其Python子进程继承niceness值,并且不尝试使用所有内…

Python输出numpy数组作为base64编码的字符串而不是jpg - python

我有一个简单的Python3脚本,它使用以下命令从numpy数组创建图像...cv2.imwrite("finalImage.jpg", numpyArray) 这可以正常工作,但是现在我希望输出的是base64编码的字符串,而不是jpg图像。我知道我可以将输出的jpg图像转换为base64字符串,但是有一种方法可以直接执行此操作,因此我…