小编iam*_*pat的帖子

访问OpenCV中的每个单独通道

我有一个带有3个通道(img)的图像和另一个带有单个通道(ch1)的图像.

    Mat img(5,5,CV_64FC3);
    Mat ch1 (5,5,CV_64FC1);
Run Code Online (Sandbox Code Playgroud)

是否有任何有效的方法(不使用for循环)将img的第一个通道复制到ch1

c++ opencv

23
推荐指数
4
解决办法
6万
查看次数

比较python中的计算机视觉库

我想决定一个Python计算机视觉库.我在C++中使用过OpenCV,非常喜欢它.但是这次我需要用Python开发我的算法.我的短名单有三个库:1- OpenCV(Python包装器)2- PIL(Python图像处理库)3- scikit-image

你能帮我比较一下这些库吗?

我在其余的代码中使用了numpy,scipy和scikit-learn.性能和易用性是一个重要因素,便携性对我来说也是一个重要因素.

谢谢你的帮助

python opencv image-processing computer-vision scikit-learn

8
推荐指数
1
解决办法
2342
查看次数

在scikit-learn中使用BaseEstimator的GradientBoostingClassifier?

我尝试在scikit-learn中使用GradientBoostingClassifier,它的默认参数工作正常.但是,当我尝试用不同的分类器替换BaseEstimator时,它不起作用并且给了我以下错误,

return y - np.nan_to_num(np.exp(pred[:, k] -
IndexError: too many indices
Run Code Online (Sandbox Code Playgroud)

你有解决问题的方法吗?

可以使用以下代码段重新生成此错误:

import numpy as np
from sklearn import datasets
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.utils import shuffle

mnist = datasets.fetch_mldata('MNIST original')
X, y = shuffle(mnist.data, mnist.target, random_state=13)
X = X.astype(np.float32)
offset = int(X.shape[0] * 0.01)
X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:]

### works fine when init is None
clf_init = None
print 'Train with clf_init = None'
clf = GradientBoostingClassifier( …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning scikit-learn ensemble-learning

8
推荐指数
3
解决办法
8227
查看次数

Numpy/Python表演与Matlab相比

我在python(numpy)中有一个简单的矩阵乘法代码

import numpy as np
import time
a = np.random.random((70000,3000));
b = np.random.random((3000,100));
t1=time.time()
c = np.dot(a,b);
t2=time.time()
print 'Time passed is %2.2f seconds' %(t2-t1
Run Code Online (Sandbox Code Playgroud)

在一个核心上完成乘法(c = np.dot(a,b);)需要大约16秒.但是当我在Matab上运行相同的乘法时,它需要大约1秒(6个核心)来完成乘法.

那么,为什么Matlab比矩阵乘法的numpy快2.6倍?(每个核心的性能对我来说很重要)

更新我这次使用Eigen做了同样的事情.它的性能略优于Matlab.Eigen使用与Numpy使用相同的Blas实现.所以Blas的实现并不是性能缺陷的根源.

为了确保已安装的numpy使用BLAS,我np.show_config()

enter code here
blas_info:
   libraries = ['blas']
   library_dirs = ['/usr/lib64']
   language = f77
lapack_info:
   libraries = ['lapack']
   library_dirs = ['/usr/lib64']
   language = f77

atlas_threads_info:
   NOT AVAILABLE

blas_opt_info:
   libraries = ['blas']
   library_dirs = ['/usr/lib64']
   language = f77
   define_macros = [('NO_ATLAS_INFO', 1)]

atlas_blas_threads_info:
   NOT AVAILABLE

lapack_opt_info:
   libraries = …
Run Code Online (Sandbox Code Playgroud)

python matlab numpy

4
推荐指数
1
解决办法
1586
查看次数

in(std :: cin):这是什么意思?

在Boost的第一个例子中in(std::cin)使用.我认为in()得到一个istream并创建一些迭代器.但是,我找不到任何能够详细解释它的C++文档.你能帮我找一个吗?

这是Boost网页上示例的复制和粘贴:

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
   using namespace boost::lambda;
   typedef std::istream_iterator<int> in;
   std::for_each(
   in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
Run Code Online (Sandbox Code Playgroud)

c++ stl istream-iterator

3
推荐指数
1
解决办法
1042
查看次数

在C++中强制执行内存对齐

我想设计一个内部使用EIGEN的API.

基于http://eigen.tuxfamily.org/dox/TopicPassingByValue.html,如果类具有Eigen对象作为成员,则不能通过值传递.

是否有任何直接的方式来告诉编译器(例如g ++)我的对象不能通过值传递?

c++ eigen

2
推荐指数
1
解决办法
619
查看次数

多维字符串的Levenshtein距离算法

我正在寻找多维字符串的 Levenshtein 距离(编辑距离)的扩展。我不确定多维是否有正式的定义,但这是我在谈论的内容:

一维字符串:是常规字符串

二维字符串:类似于一维字符串列表,例如

dfdsfdsfdsf
dsffgdfdgfdsdaf
dsfdsf
fdgfdgfdg
Run Code Online (Sandbox Code Playgroud)

ND 字符串:是 (N-1)-D 个字符串的列表

如何计算这种多维字符串之间的 Levenshtein 距离?

string algorithm data-structures

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