- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在动态创建一些我想在包装器中运行的 python 代码。这是一个过于简化的例子。
[包装器.py]
import cv2
img = cv2.imread('pic.png',0)
__import__("fragment")
cv2.imshow('pic',img)
[片段.py]
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
我希望包装器设置任何导入和变量,然后导入将执行某些操作(即使图像灰度化)的片段,然后再执行一些标准化操作(即显示图像)。
片段会发生变化(遗传算法),所以我更愿意将它们与设置分开,设置将保持不变,只会让片段的操作变得更加复杂。
当我运行该程序时,由于未定义 cv2 和 img(范围错误),我在片段上出现依赖性错误。有没有办法通过更正我上面使用的方法或其他方法来实现这一点?
我希望我也可以在 ram 中创建文件的组合,然后执行它或使用包含所有需要的包装的自身版本覆盖片段,但我想看看是否有什么东西清洁第一。
真诚的,保罗。
最佳答案
The fragments will be changing (genetic algorithm) so I would prefer to keep them separate from the setup which will be constant and will just get make manipulating the fragments more complicated.
无论您在 fragment.py
中实现的遗传算法有多复杂,我都看不到导入 cv2
(以及最终更多模块)会如何影响它方式或其他方式。
但是,我同意你声明的第一部分,因为你要尊重 separation of concerns的原则。 让你的代码更简洁。
针对您的问题,我看到的解决方案是设置一个配置文件 config.py
,您可以在其中设置所有导入。但是,将 config.py
导入其他文件是没有用的,除非您成功地使 cv2
等模块在其他地方一劳永逸。您可以通过 dynamically importing them 实现 config.py
文件中:
cv2=__import__('cv2')
在您的主程序、fragment.py
文件或任何模块中,您只需运行以下命令即可使用 cv2
:
import config
config.cv2.imread('pic.png')
import config
↔ 你不再需要运行:import cv2
。这是因为此技巧将 cv2
呈现为跨多个模块可用的全局变量。
同样的想法也适用于您需要在 config.py
文件中声明的其他变量,例如 img
。
鉴于这些事实,这是我针对您的问题的解决方案。请注意,我没有使用类和函数:我更愿意直接解决您的问题,而不是让事情过于简单明了。
代码组织:
config.py
文件对应于您的wrapper.py
:
solution/
├── application.py
├── cfg
│ ├── config.py
│ └── __init__.pyc
├── gallery
│ └── pic.png
└── genalgos
├── fragment.py
└── __init__.py
配置文件:
# This will make cv2 global and thus you won't need to import it in ./genalgos/fragment.py
# You can use the same idea for all your other imports
cv2=__import__('cv2')
imgc=cv2.imread('./gallery/pic.png') # imgc is global
片段.py:
# The only import you can not avoid is this one
import cfg.config
# imgs is global
# By importing cfg.config you do not need to import cv2 here
imgf=cfg.config.cv2.cvtColor(cfg.config.imgc,cfg.config.cv2.COLOR_BGR2GRAY)
应用程序.py:
import cfg.config
import genalgos.fragment
if __name__=="__main__":
"""
Display the image 'imgc' as it is in 'cfg/config' file
"""
cfg.config.cv2.imshow('Pic in BGR',cfg.config.imgc)
cfg.config.cv2.waitKey(0)
cfg.config.cv2.destroyAllWindows()
"""
Display the grascaled image 'imgf' as it is in 'genalgos/fragment' file which
itself is obtained after transforming imgc of 'cfg/config' file.
"""
cfg.config.cv2.imshow('PIC Grayscaled',genalgos.fragment.imgf)
cfg.config.cv2.waitKey(0) # Press any key to exit
cfg.config.cv2.destroyAllWindows() # Unpaint windows and leave
关于Python导入依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35453680/
我在 gobject 上阅读了一个维基百科页面,上面写着, Depending only on GLib and libc, GObject is a cornerstone of GNOME and
如何注册一个依赖属性,其值是使用另一个依赖属性的值计算的? 由于 .NET 属性包装器在运行时被 WPF 绕过,因此不应在 getter 和 setter 中包含逻辑。解决方案通常是使用 Proper
我一直在尝试将 ActionbarSherlock maven 依赖项添加到我的项目中 com.actionbarsherlock library 4.2.0 在我的 po
http://tutorials.jenkov.com/ood/understanding-dependencies.html#whatis说(强调我的): Whenever a class A us
我对所有这些魔法有点不清楚。 据我了解,依赖属性是从 DependencyObject 继承的,因此存储值: 如果分配了值(在本地字典中),则在实例本身中 或者如果未指定值,则从指向父元素的链接中获取
我刚刚更新了在 ASP.NET Framework 4.5.2 版上运行的 MVC Web 应用程序。我正在使用 Twilio 发送 SMS 消息: var twilio = new TwilioRe
我刚刚发现了一件令人生畏的事情。 spring 依赖坐标有两个版本。 项目依赖于 spring mvc 和 spring flow。有两组并行的依赖项。 Spring MVC 具有以下方案的依赖项
我正在尝试包含 的 maven 依赖项 org.jacorb jacorb 2.3.1 依赖已解决,但它导致另一个依赖 picocontainer 出现问题: [ERROR
我正在尝试在 Haskell 项目中包含特定版本的库。该库是住宿加早餐型的(用于 martix 操作),但我需要特定的 0.4.3 版本,该版本修复了乘法实现的错误。 所以,我的 stack.yaml
有谁知道如何制作依赖的 UIPickerView.例如,当我选择组件一的第 2 行时,组件二的标题会发生变化吗? 我在互联网上查找过,没有真正的答案,我尝试过使用 if 和 switch 语句,但它们
我正在编写一个用于验收测试的项目,由于各种原因,这依赖于另一个打包为 WAR 的项目。我已成功使用 maven-dependency-plugin 解压 WAR,但无法让我的项目包含解压的 WEB-I
或多或少我在 session 上大量构建我的网站(特别是重定向用户等),我很好奇这是否是一种危险的做法。禁用浏览器 cookie 保存的用户的大致比例是多少?我愿意接受任何建议:) 谢谢 最佳答案 s
开始玩 Scala futures,我被依赖的 futures 困住了。 让我们举个例子。我搜索地点并获得 Future[Seq[Place]]。对于这些地点中的每一个,我搜索最近的地铁站(该服务返回
或多或少我在 session 上大量构建我的网站(特别是重定向用户等),我很好奇这是否是一种危险的做法。禁用浏览器 cookie 保存的用户的大致比例是多少?我愿意接受任何建议:) 谢谢 最佳答案 s
我有一个二进制文件,需要一些 *.so 文件才能执行。现在,当我尝试在一些旧机器上执行它时,它会显示 /lib/libc.so.6: version `GLIBC_2.4' not found 如何将
我尝试使用 Dygraph 来表示图表,我在 https://github.com/danvk/dygraphs 中找到了代码,但是它有太多的依赖文件,我觉得很烦人。是否有一个文件可以容纳所有必需的
我正在处理一个 javascript 文件,该文件 a) 声明一个具有函数的对象,并且 b) 使用它期望在外部声明的散列调用该对象的 init 函数。我的 Jasmine 规范提示它找不到哈希,因为它
最近我一直在学习 Angular 并且进展顺利,但是关于依赖注入(inject)的一些事情我仍然不清楚。 是否有任何理由在我的 app.js 文件中声明我的应用程序的其他部分(服务、 Controll
考虑一个名为 foo 的表,它有 id (PRIMARY & AUTO_INCREMENT) 列。我正在向该表中插入一行,挑战从此时开始。 $db->query("INSERT INTO `foo`
我正在使用级联下拉 jquery 插件。 (https://github.com/dnasir/jquery-cascading-dropdown) 我有两个下拉菜单。 “客户端”和“站点”。 根据您
我是一名优秀的程序员,十分优秀!