我一直在尝试使用OpenCV的MSERalgorithm的Python实现(opencv 2.4.11)和Java实现(opencv 2.4.10)。 有趣的是,我注意到MSER的检测返回Python和Java的不同types的输出。 在Python中,detect会返回一列点列表,其中每个点列表代表一个检测到的斑点。 在Java中,返回一个Mat ,每一行都是一个单一的点,其直径代表检测到的一个斑点。 我想重现Java中的Python行为,其中blob由一组点定义,而不是一个点。 任何人都知道发生了什么事? python: frame = cv2.imread('test.jpg') mser = cv2.MSER(**dict((k, kw[k]) for k in MSER_KEYS)) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) regions = mser.detect(gray, None) print("REGIONS ARE: " + str(regions)) where the dict given to cv2.MSER is {'_delta':7, '_min_area': 2000, '_max_area': 20000, '_max_variation': .25, '_min_diversity': .2, '_max_evolution': 200, '_area_threshold': 1.01, '_min_margin': […]
我的目标是为IPython编写一个交互式variables查看器,也就是说,可以查看嵌套的字典/列表树,并向下钻取(有点像Javascript中的console.log)。 我花了很多时间尝试从IPython的directview示例中提取简约的代码,但是仍然无法理解它是如何工作的。 我的Python确定,但我的jQuery经验是相当有限的。 所以我不得不将directview.js剥离到下面 container.show(); var widget = $('<div/>') element.append(widget); var output = $('<div></div>'); $(widget).append(output) var output_area = new IPython.OutputArea(output, false); var callbacks = { 'output': $.proxy(output_area.handle_output, output_area) }; var code = 'print 1+1' var msg_id = IPython.notebook.kernel.execute(code, callbacks, {silent: false}); 这个工程当我加载directview.ipynb。 但是,我仍然不清楚如何使其完全独立(即不需要directview.py,并传递比IPython.OutputArea的标准handle_output另一个callback)。 其中一个问题是container.show()在以独立方式调用时失败。 我迷失在几个方面: 为什么有一个element.append(widget) ,然后$(widget).append(output) ? 另外为什么还需要创build一个Ipython.OutputArea 。 没有办法创build一个<div id=my_output_area>blah</div>然后让outputcallback用相关数据填充它吗? 什么是整个.proxy的东西呢? 我想创build自己的callbackoutput但是当我这样做和console.log()parameter passing给callback,他们是undefined或只是无用的。 […]
我试图在scikit-learn中为RidgeClassifierCV实现一个自定义的评分函数。 这涉及在初始化RidgeClassifierCV对象时将自定义评分函数作为score_func RidgeClassifierCV 。 我期望score_func将y_true和y_pred分类值作为input。 但是,浮点值作为y_true和y_pred 。 y向量的大小等于类数乘以训练样例数,而不是简单地具有长度等于训练样例数的y向量。 我能以某种方式强制分类预测传递到自定义评分函数,还是我必须处理原始权重? 如果我不得不直接处理原始权重,那么输出向量的一个片段中的最大值的索引是否等同于预测的类别?
我正试图让Oauth使用Python来处理Google API。 我尝试过不同的oauth库,比如oauth , oauth2和djanog-oauth,但是我不能使它工作(包括提供的例子)。 为了debuggingOauth,我使用Google的Oauth Playground ,并研究了API和Oauth文档 有些库我正在努力获得一个正确的签名,与其他图书馆我努力将请求令牌转换为授权令牌。 如果有人能够使用上述库中的一个向我展示Google API的工作示例,那么真的会有帮助。 编辑:我最初的问题没有导致任何答案,所以我已经添加了我的代码。 这个代码有两个可能的原因不起作用: 1)Google不会授权我的请求令牌,但不太确定如何检测到这一点 2)访问令牌的签名是无效的,但是我想知道Google所期望的oauth参数,因为我能够在第一阶段生成一个合适的签名。 这是使用oauth2.py和Django编写的,因此是HttpResponseRedirect。 REQUEST_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetRequestToken' AUTHORIZATION_URL = 'https://www.google.com/accounts/OAuthAuthorizeToken' ACCESS_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetAccessToken' CALLBACK = 'http://localhost:8000/mappr/mappr/oauth/' #will become real server when deployed OAUTH_CONSUMER_KEY = 'anonymous' OAUTH_CONSUMER_SECRET = 'anonymous' signature_method = oauth.SignatureMethod_HMAC_SHA1() consumer = oauth.Consumer(key=OAUTH_CONSUMER_KEY, secret=OAUTH_CONSUMER_SECRET) client = oauth.Client(consumer) request_token = oauth.Token('','') #hackish way […]
在Cython中使用复数的正确方法是什么? 我想写一个纯粹的C循环使用dtype np.complex128的numpy.ndarray。 在Cython中,关联的Ctypes是在Cython/Includes/numpy/__init__.pxd as ctypedef double complex complex128_t 所以这似乎只是一个简单的C双复杂。 但是,很容易获得奇怪的行为。 特别是有了这些定义 cimport numpy as np import numpy as np np.import_array() cdef extern from "complex.h": pass cdef: np.complex128_t varc128 = 1j np.float64_t varf64 = 1. double complex vardc = 1j double vard = 1. 线 varc128 = varc128 * varf64 可以由Cython编译,但是gcc不能编译生成的C代码(错误是“testcplx.c:663:25:error:两个或多个数据types在声明说明符中”,似乎是由于typedef npy_float64 _Complex __pyx_t_npy_float64_complex; )。 […]
点testing套件使用subprocess调用来运行集成testing。 最近一个公关被删除了一些旧的兼容性代码。 特别是它明确使用b""文字replace了一个b()函数。 然而,这似乎已经打破了一个特定的subprocess调用永远挂起的地方。 更糟糕的是,它只能永远停留在Python 3.3(也许只有Python 3.3.5)上,并且不能在Travis之外轻松地复制。 相关的请求: https://github.com/pypa/pip/pull/1901 https://github.com/pypa/pip/pull/1900 https://github.com/pypa/pip/pull/1878 其他Pull请求也会出现类似的问题,但是在不同版本的Python和不同的testing用例上会失败。 这些Pull请求是: https://github.com/pypa/pip/pull/1882 https://github.com/pypa/pip/pull/1912(Python 3.3再次) 另一位用户今天在IRC上向我报告了类似的问题,他们说他们可以在Ubuntu 14.04上使用Python 3.3从本地复制它(而不是在OSX上),而不仅仅是在Travis上,就像我迄今为止所做的那样。 他们已经让我步骤重现哪些是: $ git clone git@github.com:xavfernandez/pip.git $ cd pip $ git checkout debug_stuck $ pip install pytest==2.5.2 scripttest==1.3 virtualenv==1.11.6 mock==1.0.1 pretend==1.0.8 setuptools==4.0 $ # The below should pass just fine $ py.test -k test_env_vars_override_config_file -v -s $ […]
所以我有一个Python脚本,我只是为了方便起见而使用python 3.2和2.7。 有没有一种方法可以让Unicode字符在这两个工作? 例如 #coding: utf-8 whatever = 'שלום' 上面的代码需要在python 2.x(u“)和python 3.x中使用一个unicodestring,这个”u“会导致语法错误。 无论如何,我find了答案,我需要的只是: from __future__ import unicode_literals 我仍然发布这个问题,因为https://meta.stackexchange.com/questions/49922/should-i-continue-adding-a-question-if-i-have-found-the-answer-myself 对于好奇,这是我正在工作: http : //code.google.com/p/pytitle/
对于Scrapy如何使用Cookie以及如何pipe理这些Cookie,我有点困惑。 这基本上是我想要做的简化版本: 网站的工作方式: 当你访问网站时,你会得到一个会话cookie。 当你进行search时,网站会记住你search的内容,所以当你进入下一页的search结果时,它会知道search结果。 我的脚本: 我的蜘蛛有一个searchpage_url的开始url search页面被parse()请求,search表单响应被传递给search_generator() search_generator()然后使用FormRequest和search表单响应yield大量的search请求。 每个FormRequests和后续的子请求都需要拥有它自己的会话,所以需要拥有它自己的cookiejar和它自己的会话cookie。 我已经看到文档的部分,谈论一个元选项,停止被合并的Cookie。 这实际上是什么意思? 这是否意味着使请求的蜘蛛在其余生命中将拥有自己的cookiejar? 如果每个蜘蛛级别的cookie都是这样的,那么当多个蜘蛛产生时它是如何工作的? 是否有可能只让第一个请求生成器产生新的蜘蛛,并确保从那时起只有蜘蛛处理未来的请求? 我假设我必须禁用多个并发请求。否则,一个蜘蛛会在相同的会话cookie下进行多次search,而将来的请求只会涉及到最近的search? 我很困惑,任何澄清将大受欢迎! 编辑: 我刚刚想到的另一个选项是完全手动pipe理会话cookie,并将其从一个请求传递给另一个。 我想这将意味着禁用cookies ..然后从search响应抓取会话cookie,并将其传递给每个后续请求。 这是你在这种情况下应该做的吗?
所以我试图在我的virtualenv(在控制台)中运行一个简单的matplotlib示例。 代码如下: import matplotlib matplotlib.use('GTKAgg') import matplotlib.pyplot as plt radius = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] area = [3.14159, 12.56636, 28.27431, 50.26544, 78.53975, 113.09724] plt.plot(radius, area) plt.show() 但是,当我运行这个我得到: ImportError:Gtk *后端需要安装pygtk。 现在乐趣开始了。 我试图安装pygtk,但它抛出: ******************************************************************** * Building PyGTK using distutils is only supported on windows. * * To build PyGTK in a supported way, read the […]
多进程是Python中的一个强大的工具,我想更深入地理解它。 我想知道什么时候使用常规的 锁和队列以及何时使用多处理器pipe理器在所有进程之间共享这些。 我想出了四种不同的多处理条件下的testing场景: 使用池和NOpipe理器 使用一个池和一个经理 使用单个进程和NOpipe理器 使用单独的进程和pipe理器 工作 所有的条件执行工作职能the_job 。 the_job包含一些由锁保护的打印。 而且,函数的input只是简单地放入一个队列(查看是否可以从队列中恢复)。 这个input只是在主脚本start_scenario创build的range(10)的索引idx (显示在底部)。 def the_job(args): """The job for multiprocessing. Prints some stuff secured by a lock and finally puts the input into a queue. """ idx = args[0] lock = args[1] queue=args[2] lock.acquire() print 'I' print 'was ' print 'here ' print '!!!!' […]