python-3.x - 如何删除嵌套的 for 循环并使用 numpy 数组 insead

标签 python-3.x numpy opencv for-loop numpy-indexing

我有一个包含 580 帧的视频。我需要能够从视频中检测到绿色并创建一个 mask ,以便在发现绿色的地方放置零值,其余的应该是 255。我已经将视频转换为 HSV 格式并使用嵌套 for 循环,它大约需要一个小时才能完成我想知道是否有更快的方法。
这是我当前的代码

for i in range(0, len(temp)):
   temp[i] = cv2.cvtColor(temp[i], cv2.COLOR_BGR2HSV)
for k in range(0, len(temp)):
    for i in range(0, len(temp[k])):
        for j in range(0, len(temp[k][i])):
           if(temp[k][i][j][0] > 50 and temp[k][i][j][0] < 65 and temp[k][i][j][2] > 150):
               temp1[k][i][j][0] = 0
               temp1[k][i][j][1] = 0
               temp1[k][i][j][2] = 0
           else:
               temp1[k][i][j][0] = 255
               temp1[k][i][j][1] = 255
               temp1[k][i][j][2] = 255

temp 是我的 HSV 数组,temp1 是我正在创建的掩码

最佳答案

不是 cv2 专家,但如果它像 numpy 数组一样工作,那么 . . .

for i in range(0, len(temp)):
   temp[i] = cv2.cvtColor(temp[i], cv2.COLOR_BGR2HSV)
   temp1[i] = (1 - cv2.inRange(temp[i], (50, 0, 150), (65, 255, 255)).astype(int)) * 255

关于python-3.x - 如何删除嵌套的 for 循环并使用 numpy 数组 insead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060875/

相关文章:

python - 从 numpy 数组中获取最大或最小 n 个元素? (最好不要压平)

python - 矩阵的 NumPy 张量/克罗内克积被打乱

python - 如何匹配python中正则表达式中字符串列表中的任何字符串?

python - 使用 openpyxl 读取为时间日期的 float 数值

numpy - 获取两个 2D numpy 数组的相交行

android - 将 OpenCV 示例导入 Android Studio

iphone - Iphone 上的实时面部跟踪

python - OpenCV霍夫圆变换不起作用

python - 获取 dateutil.parse 中的格式

python - 我应该为 knn 规范化或标准化我的数据集吗?