这可能是我在使用OpenCV时遇到的最奇怪的错误之一.有很多事情要发生,所以让我尽力解释这个问题.
我一起使用Django Web框架和OpenCV(cv2).我试图从Django的视图中读取我的磁盘上的文件.
imagePath = os.path.dirname(__file__) + "/1.jpg"
Run Code Online (Sandbox Code Playgroud)
基本上,在与views.py文件相同的路径中,有一个名为"1.jpg"的文件.这就是所有这些代码正在做的事情.很容易.但下一步是事情变得疯狂.
现在,我想读取位于'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) 我正在使用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质心?
我正在使用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 代码:
#!/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) 是否有人遇到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中执行转换吗?
我开发了一个简单的小型iPhone应用程序(用于学术目的),允许用户拍摄对象的图片.在拍摄照片时,也会捕获来自手机的加速度计数据.用户将采用自上而下(鸟瞰图)的图像,这意味着手机应合理地与物体成90度角.但是,无法保证角度始终为90度的概念.
鉴于我有拍摄图像时的加速度计数据(x,y,z值),我相信有一种方法可以构建一个变换矩阵来转换图像,好像它是从90度角拍摄的.但是,我不确定如何构建这个矩阵.
正如我所提到的,这是为了游戏/学术目的,所以一旦我捕获图像和x,y,z数据,我只需将其发送到我的一台计算机进行进一步处理.正在使用Python和OpenCV执行处理.
任何帮助或指针将不胜感激.
python ×6
opencv ×3
numpy ×2
apache ×1
arrays ×1
chi-squared ×1
django ×1
iphone ×1
scipy ×1
statistics ×1