Bra包中的Python布尔值?

时间:2014-12-07 23:08:33

标签: 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进行比较,然后以某种方式(这对我来说这是一个奇怪的部分)将布尔值的结果转换为xy坐标vis,然后将图像值设置为绿色。

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

1 个答案:

答案 0 :(得分:2)

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