小编tis*_*sch的帖子

OpenCV 2d线交叉辅助函数

我正在寻找一个辅助函数来计算OpenCV中两条线的交集.我搜索过API文档,但找不到有用的资源.

是否有基本的几何辅助函数用于OpenCV中线/线段的交点/距离计算?

opencv

16
推荐指数
2
解决办法
3万
查看次数

使用imread从OpenCV图像转换为RGB到灰度,结果不佳

我正在从PNG文件中将24位RGB图像加载到我的OpenCV应用程序中.

然而,直接使用灰度图像加载图像imread会产生非常差的结果.

Mat src1 = imread(inputImageFilename1.c_str(), 0);
Run Code Online (Sandbox Code Playgroud)

将RGB图像加载为RGB并将其转换为灰度可以获得更好的效果.

Mat src1 = imread(inputImageFilename1.c_str(), 1);
cvtColor(src1, src1Gray, CV_RGB2GRAY);
Run Code Online (Sandbox Code Playgroud)

我想知道我imread是否正确使用我的图像类型.有谁经历过类似的行为?

使用转换为灰度的图像imread如下所示: 结果不好

使用转换为灰度的图像cvtColor如下所示: 好结果

opencv

16
推荐指数
2
解决办法
6万
查看次数

可能带有python绑定的大规模集群库

我一直在尝试聚集一些更大的数据集.由50000个尺寸为7的测量矢量组成.我正在尝试生成大约30到300个簇以进行进一步处理.

我一直在尝试以下集群实现而没有运气:

  • Pycluster.kcluster(在我的数据集上只提供1-2个非空簇)
  • scipy.cluster.hierarchy.fclusterdata(运行时间太长)
  • scipy.cluster.vq.kmeans(内存不足)
  • sklearn.cluster.hierarchical.Ward(运行时间太长)

我可能会错过任何其他实现吗?

python cluster-analysis data-mining

6
推荐指数
2
解决办法
5511
查看次数

如何使用cmake函数get_prerequisites和get_filename_component进行目标依赖项安装?

我们已经设置了一个具有外部共享库依赖项的cmake项目.我们想使用CPack打包项目的二进制文件和依赖项.但是,当我们尝试查找目标的依赖关系时,我们在Windows和Linux系统上获得了不同的结果.

我们看了一下CMake的GetPrerequisites模块(2.8.12).我们已成功使用以下CMake代码在linux上获取CMake目标(BINARY)依赖(_libFile)的完整路径,但是我们没有得到Windows依赖的完整路径.在Windows上,变量dependency_realpath保存类似于$ {CMAKE_SOURCE_DIR}/DEPENDENCY_FILE的内容,这不是依赖项的正确路径.

string(TOUPPER "${CMAKE_BUILD_TYPE}" CONFIG)
GET_TARGET_PROPERTY(MY_BINARY_LOCATION ${BINARY} LOCATION_${CONFIG} )
GET_PREREQUISITES(${MY_BINARY_LOCATION} DEPENDENCIES 0 0 "" "")

foreach( DEPENDENCY_FILE ${DEPENDENCIES})
    get_filename_component( dependency_realpath ${DEPENDENCY_FILE} REALPATH)
Run Code Online (Sandbox Code Playgroud)

所以问题是:为什么我们在Windows和Linux上获得不同的依赖位置结果?

cmake

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

OpenCV Mat数据成员访问

我见过很多OpenCV代码cv::Mat直接访问a的数据成员.cv::Mat存储指向unsigned char* data成员中数据的指针.对数据成员的访问如下:

cv::Mat matUC(3,3,CV_8U)
int rowIdx = 1;
int colIdx = 1;

unsigned char val = matUC.data[ rowIdx * matUC.cols + colIdx]
Run Code Online (Sandbox Code Playgroud)

我想知道这是否适用于cv::Mat像素类型以外的其他类型unsigned char.

cv::Mat matF(3,3,CV_32F)
int rowIdx = 1;
int colIdx = 1;

float val = matF.data[ rowIdx * matF.cols + colIdx];
Run Code Online (Sandbox Code Playgroud)

我的理解是需要一个类型转换来正确访问元素.就像是:

float val = ((float*)matF.data)[ rowIdx * matF.cols + colIdx];
Run Code Online (Sandbox Code Playgroud)

我见过很多不使用类型转换的代码.所以我的问题是:类型转换是否必须访问正确的元素?

c++ opencv image-processing

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

Django 并行 for 循环 joblib 警告:“多处理支持的并行循环不能嵌套在线程下方,设置 n_jobs=1”

from joblib import Parallel, delayed

def func(arg1, arg2, arg3):
    # do some processing and return result
    return result

def func2():
    arg1 = 'value1'
    arg2 = 'value2'
    elems = ['a','b','c','d','e']    

    resultsList = Parallel(n_jobs=4)(delayed(func)(arg1, arg2, elem) for elem in elems)
Run Code Online (Sandbox Code Playgroud)

在 django 视图中调用func2会引发以下警告:

“多处理支持的并行循环不能嵌套在线程下方,设置 n_jobs=1”

有一个相关的问题,但这里的解决方法是将线程名称重命名为“MainThread”,这看起来很奇怪,并且在我的情况下不起作用。

是否可以使用 joblib 在 django 视图中并行化 for 循环?有一个更好的方法吗?

python django parallel-processing multithreading joblib

5
推荐指数
0
解决办法
1572
查看次数

如何通过引用将std :: vector传递给函数,默认值是C++中的空std :: vector?

我一直试图通过引用将std :: vector传递给函数,默认值为空std :: vector.我的函数声明如下:

void function( std::vector<double>& vec=std::vector<double>(0));
Run Code Online (Sandbox Code Playgroud)

我的功能定义是:

void function( std::vector<double>& vec)
{
...
}
Run Code Online (Sandbox Code Playgroud)

但是我的C++编译器(gcc 4.6)在这里抛出错误,说:

错误:'std :: vector&'类型参数的默认参数类型为'std :: vector'

我已经看到这个版本的代码在Microsoft VS 2010编译器上编译得很好.我想知道这是否是gcc和vs2010之间不同c ++标准解释的问题.

c++ gcc visual-studio-2010

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