【问题标题】:is there another way to write this code?this seems pretty hard to understand还有其他方法可以编写此代码吗?这似乎很难理解
【发布时间】:2020-08-15 13:30:34
【问题描述】:

我在 youtube 上的 OpenCV 课程上看到了这个,但我没听懂。 有人能解释一下这是什么吗?有没有更简单的方法来写这部分?

import cv2
event = [i for i in dir(cv2) if 'EVENT' in i] 

【问题讨论】:

标签: python opencv for-loop cv2


【解决方案1】:

这就是list comprehenstion。类似于

import cv2

event = []
for i in dir(cv2):
    if 'EVENT' in i:
        event.append(i)

dir 用于从 cv2 获取所有有效属性,然后如果当前属性 (i) 的名称上有 EVENT,那么它将存储在 event 上。

下面的代码将打印['EVENT_1', 'EVENT_3']

class CV2:
  EVENT_1 = 1
  two = 2

  def EVENT_3():
    return 3

cv2 = CV2()
print([i for i in dir(cv2) if 'EVENT' in i])

【讨论】:

  • 第一个 i 代表什么?
  • 它引用了for loop上的当前项目。
  • dir() 在不同情况下的工作方式不同,主要是返回属性。
【解决方案2】:

dir 命令是 Python (docs) 中的内置命令,用于列出对象的所有属性。

所以这个命令会循环遍历 cv2 中的所有属性并过滤名称中包含“EVENT”的属性。

为了使这更具表现力,我会列出您感兴趣的 EVENT 属性

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多