括号中的 Python bool 值?

标签 python opencv

我正在使用 Python 开发 OpenCV,并在边缘检测脚本中 here我遇到了我以前从未见过的东西。如果之前有人在这里问过这个问题,我深表歉意,但我不确定要搜索什么。

我已经在下面粘贴了相关的部分:

while True:
    flag, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    thrs1 = cv2.getTrackbarPos('thrs1', 'edge')
    thrs2 = cv2.getTrackbarPos('thrs2', 'edge')
    edge = cv2.Canny(gray, thrs1, thrs2, apertureSize=5)
    vis = img.copy()
    vis /= 2
    vis[edge != 0] = (0, 255, 0) #This is the line I'm trying to figure out
    cv2.imshow('edge', vis)

代码不是我的,而是 OpenCV 文档的一部分。据我所知,vis[edge != 0] 正在遍历 edge 中的每个元素,将其与 true 进行比较,然后以某种方式(这对我来说是奇怪的部分)将 bool 值评估的结果转换为 xy 坐标vis,然后将图像值设置为绿色。

这对我来说似乎有点神奇,因为我从来没有遇到过这样的事情,因为我主要是一名 C/C++ 程序员。有人可以指出我可以阅读的文档吗?我的 STFW 没有成功,因为我不知道如何称呼这种行为。

最佳答案

vis 是一个 numpy 数组,[edge != 0] 似乎是 numpy.where() 函数的语法糖...因此它使用 Canny 对值进行阈值处理,然后在边缘所在的 vis 图像上绘制一条绿线。

这是一个类似的例子。

import numpy as np
x = np.arange(10)
y = np.zeros(10)
print y
y[x>3] = 10
print y

关于括号中的 Python bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27348970/

相关文章:

Python如何过滤A列中的子字符串在B列的字符串中找到的数据框?

python - Pandas:对列求和,直到其他列满足条件

java - 如何使这个 Project Euler 解决方案在 Python 中以与 Java 相同的速度执行?

javascript - 如何正确呈现 FilteredSelectMultiple

python - opencv中的相机校准(Python立体相机)。错误:解包的值(value)太多

image-processing - 计算 OpenCV 的 findHomography 的目标点

visual-studio-2010 - cxcore210.dll 的问题

python - 新的 DataFrame 是每天的平均值

opencv - 使用 openCV 的 Bayer 到 HSV

visual-studio-2010 - VS10上的OpenCV打开然后关闭