小编Adr*_*ock的帖子

从Web请求调用时,OpenCV imread挂起

这可能是我在使用OpenCV时遇到的最奇怪的错误之一.有很多事情要发生,所以让我尽力解释这个问题.

  1. 我一起使用Django Web框架和OpenCV(cv2).我试图从Django的视图中读取我的磁盘上的文件.

    imagePath = os.path.dirname(__file__) + "/1.jpg"
    
    Run Code Online (Sandbox Code Playgroud)

    基本上,在与views.py文件相同的路径中,有一个名为"1.jpg"的文件.这就是所有这些代码正在做的事情.很容易.但下一步是事情变得疯狂.

  2. 现在,我想读取位于'imagePath'的图像文件.这需要调用cv2.imread

    image = cv2.imread(imagePath)
    
    Run Code Online (Sandbox Code Playgroud)

    但这是我的问题开始的地方.不知何故,Apache(或者甚至OpenCV,我无法分辨)开始挂起,文件永远不会被加载.没有错误消息,没有任何消息.

做一些侦探工作我决定试用一个旧版本的OpenCV(import cv).奇怪的是,当我调用cv.LoadImage(imagePath)时,Apache没有挂起,我的图像加载得很好.我完全不知道为什么.

我的问题的潜在解决方法是使用PIL.

from PIL import Image
import numpy as np
image = Image.open(imagePath)
image = np.asarray(image)
Run Code Online (Sandbox Code Playgroud)

再一次,使用PIL Apache不会挂起,我可以正常进行,我的图像表示为numpy数组,并将任何cv2函数应用于它.

但是,我不是一个满足于变通办法的人,而且cv2.imread悬挂的事实真的让我烦恼.

有没有人遇到过这个?

编辑:使用Python shell中的cv.imread工作正常,它只是来自发出挂起的Apache请求.

>>> import cv2
>>> image = cv2.imread("1.jpg")
>>> image.shape
(400, 344, 3)
>>> 
Run Code Online (Sandbox Code Playgroud)

python apache django opencv

14
推荐指数
2
解决办法
2137
查看次数

如何从SciPy的分层凝聚聚类中获得质心?

我正在使用SciPy的分层凝聚聚类方法来聚类特征的amxn矩阵,但是在聚类完成之后,我似乎无法弄清楚如何从生成的聚类中获取质心.下面是我的代码:

Y = distance.pdist(features)
Z = hierarchy.linkage(Y, method = "average", metric = "euclidean")
T = hierarchy.fcluster(Z, 100, criterion = "maxclust")
Run Code Online (Sandbox Code Playgroud)

我正在使用我的特征矩阵,计算它们之间的欧氏距离,然后将它们传递给层次聚类方法.从那里,我正在创建平面群集,最多有100个群集

现在,基于平面簇T,我如何获得代表每个平面簇的1 xn质心?

python numpy hierarchical-clustering scipy

13
推荐指数
1
解决办法
6042
查看次数

从满足布尔条件的NumPy数组中获取(列,行)索引

我正在使用2D NumPy数组.我想得到(列,行)索引,或者(x,y)坐标,如果你更喜欢这样,我的2D数组符合布尔条件.

我能解释我想要做的最好的方法是通过一个简单的例子:

>>> a = np.arange(9).reshape(3, 3)
>>> b = a > 4
>>> b
>>> array([[False, False, False],
           [False, False,  True],
           [ True,  True,  True]], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

此时我现在有一个布尔数组,指示在哪里a > 4.

此时我的目标是获取值为的布尔数组的索引True.例如,索引(1, 2),(2, 0),(2, 1),和(2, 2)所有有真值.

我的最终目标是最终得到一个索引列表:

>>> indexes = [(1, 2), (2, 0), (2, 1), (2, 2)]
Run Code Online (Sandbox Code Playgroud)

同样,我强调指出上面的代码是一个简单的例子,但我正在尝试做的事情的应用可能有任意索引,a > 4而不是基于arange和的东西reshape.

python arrays numpy

8
推荐指数
2
解决办法
7617
查看次数

理解卡方特征选择的问题

我在理解卡方特征选择时遇到了问题。我有两个类,正类和负类,每个类包含不同的术语和术语计数。我需要执行卡方特征选择来为每个类提取最具代表性的术语。问题是我最终得到了正面和负面类的完全相同的术语。这是我用于选择功能的 Python 代码:

#!/usr/bin/python

# import the necessary libraries
import math

class ChiFeatureSelector:
    def __init__(self, extCorpus, lookupCorpus):
        # store the extraction corpus and lookup corpus
        self.extCorpus = extCorpus
        self.lookupCorpus = lookupCorpus

    def select(self, outPath):
            # dictionary of chi-squared scores
        scores = {}

        # loop over the words in the extraction corpus
        for w in self.extCorpus.getTerms():
            # build the chi-squared table
            n11 = float(self.extCorpus.getTermCount(w))
            n10 = float(self.lookupCorpus.getTermCount(w))
            n01 = float(self.extCorpus.getTotalDocs() - n11)
            n00 = float(self.lookupCorpus.getTotalDocs() - n10)

            # perform the chi-squared …
Run Code Online (Sandbox Code Playgroud)

python statistics information-retrieval chi-squared

5
推荐指数
1
解决办法
2445
查看次数

cv2和BGR2YCrCb不兼容Python绑定

是否有人遇到OpenCV 2.4问题并将图像转换为YCrCb色彩空间?我正在使用Python绑定,我似乎无法找到用于转换BGR2YCrCb的任何定义.以下是我一直在尝试的一些事情:

>>> import cv2
>>> cv2.COLOR_BGR2GRAY # works fine
6L
>>> cv2.COLOR_BGR2HSV # works fine
40L
>>> cv2.COLOR_BGR2YCrCb # now the trouble starts
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'COLOR_BGR2YCrCb'
>>> cv2.COLOR_BGR2YCC
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'COLOR_BGR2YCC'
>>>
Run Code Online (Sandbox Code Playgroud)

有人知道如何在cv2中执行转换吗?

python opencv image-processing

5
推荐指数
1
解决办法
3534
查看次数

使用iPhone加速度计数据获取图像的自上而下视图

我开发了一个简单的小型iPhone应用程序(用于学术目的),允许用户拍摄对象的图片.在拍摄照片时,也会捕获来自手机的加速度计数据.用户将采用自上而下(鸟瞰图)的图像,这意味着手机应合理地与物体成90度角.但是,无法保证角度始终为90度的概念.

鉴于我有拍摄图像时的加速度计数据(x,y,z值),我相信有一种方法可以构建一个变换矩阵来转换图像,好像它是从90度角拍摄的.但是,我不确定如何构建这个矩阵.

正如我所提到的,这是为了游戏/学术目的,所以一旦我捕获图像和x,y,z数据,我只需将其发送到我的一台计算机进行进一步处理.正在使用Python和OpenCV执行处理.

任何帮助或指针将不胜感激.

python iphone opencv

5
推荐指数
1
解决办法
336
查看次数