小编Nil*_*Nil的帖子

argparse:必需组中的一些互斥参数

我有一组参数可以在逻辑上分为两组:

  • 操作:A1,A2,A3等.
  • 信息:I1,I2,I3等.

程序启动时至少需要其中一个参数,但"信息"参数可以与"动作"参数一起使用.所以

  • 操作或信息中至少需要一个
  • 所有行动都是互斥的

我找不到如何使用argparse来做到这一点.我知道add_mutually_exclusive_group它和它的required论点,但我不能在"行动"上使用它,因为它实际上并不是必需的.当然,我可以在argparse之后添加一个条件来手动检查我的规则,但它看起来像是一个黑客.argparse可以这样做吗?

编辑:对不起,这里有一些例子.

# Should pass
--A1
--I1
--A1 --I2
--A2 --I1 --I2

# Shouldn't pass
--A1 --A2
--A1 --A2 --I1
Run Code Online (Sandbox Code Playgroud)

python argparse

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

OpenCV用户定义类型的矩阵

有没有办法在OpenCV 2.x中有一个用户定义类型的矩阵?就像是 :

cv::Mat_<KalmanRGBPixel> backgroundModel;
Run Code Online (Sandbox Code Playgroud)

我知道cv :: Mat <>是用于图像和数学的,但我想以矩阵形式保存数据.我不打算使用逆,转置,乘法等,它只用于存储数据.我希望它是矩阵形式,因为视频的每个帧的pixel_ij将链接到backgroundModel_ij.

我知道core.hpp中有一个DataType <_Tp>类需要为我的类型定义,但我不知道该怎么做.

编辑: KalmanRGBPixel只是cv :: KalmanFilter类的包装器.至于现在,它是唯一的成员.

... some functions ...
private:
    cv::KalmanFilter kalman;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

c++ opencv

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

Dlang切片和数字范围

我不确定如何在D中调用".."运算符.我已经看到它:

// Slicing 
int[] t = list[3..$];

// Looping
foreach (x; 1..10) {}
Run Code Online (Sandbox Code Playgroud)

但似乎我不能在一些"逻辑"的地方使用它,例如:

int[] test = 1..N;
auto harmonic_serie = map!"1 / a"(1..1000);
Run Code Online (Sandbox Code Playgroud)

".."只是语法糖,只能用于切片和循环吗?我们是否被迫使用不太可读的std.range.iota?

d

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

基于groupby添加列

我正在尝试将 pandas 脚本移植到极地。我有一个看起来像这样的数据集

sid,roi,endpoint,value,std,voxel_count
4213-a3_bl,AF_L,afd_along,0.40,0.21,57334
4213-a3_bl,AF_L,radfODF,0.08,0.045,57334
4213-a3_bl,AF_R,afd_along,0.42,0.22,53916
4213-a3_bl,AF_R,radfODF,0.08,0.04,53916
4213-a3_bl,CC_1,afd_along,,,
4213-a3_bl,CC_1,radfODF,,,
4213-a3_bl,CC_2a,afd_along,0.54,0.30,3264
4225-a3_bl,CC_2a,radfODF,0.06,0.04,3264
4225-a3_bl,CC_2b,afd_along,0.47,0.24,18833
... thousands of rows ...
Run Code Online (Sandbox Code Playgroud)

我想添加一个基于 groupby 的列

df.filter(pl.col('roi') == 'wm_mask').groupby('sid').first()

                 roi endpoint     value       std  voxel_count
sid                                                              
4213-a3_bl   wm_mask       ad  0.001074  0.000237       602620
4225-a3_bl   wm_mask       ad  0.001071  0.000242       718758
4229-a3_bl   wm_mask       ad  0.001045  0.000243       579756
4473-a3_bl   wm_mask       ad  0.001059  0.000259       662894
4654-a3_bl   wm_mask       ad  0.001083  0.000234       562841
...              ...      ...       ...       ...          ...
Run Code Online (Sandbox Code Playgroud)

现在我想添加voxel_count与 right 相对应的新值sid,它应该给出类似的内容

sid,roi,endpoint,value,std,voxel_count,     wm_mask__count
4213-a3_bl,AF_L,afd_along,0.40,0.21,57334,  602620
4213-a3_bl,AF_L,radfODF,0.08,0.045,57334,   602620
4213-a3_bl,AF_R,afd_along,0.42,0.22,53916, …
Run Code Online (Sandbox Code Playgroud)

python-polars

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

在图像上提升grid_graph和图形切割

我正在尝试使用Boost Graph Library在2D图像上使用图形切割.我的目标是将每个像素表示为具有4个浮动边缘的节点(边界上较少).邻域像素的边缘将具有取决于渐变或强度等的值.

为此,我尝试使用boost :: grid_graph和boost :: boykov_kolmogorov_max_flow(),但没有成功.文档说grid_graph模型"顶点列表","边缘列表"和"发生率图",这是boykov_kolmogorov_max_flow的要求,所以我认为它应该工作.

这是我的代码:

const unsigned int D = 2;
typedef boost::grid_graph<D> Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor VertexDescriptor;

boost::array<unsigned int, D> lengths = { { 3, 3 } };
Graph graph(lengths, false);

// Add edge's value between pixels

VertexDescriptor s, t; // Should be initialized, I know.
float flow = boost::boykov_kolmogorov_max_flow(graph, s, t);
// error C2039: 'edge_property_type' is not a member of 'boost::grid_graph<Dimensions>'
Run Code Online (Sandbox Code Playgroud)

我知道s和t应该初始化,但我只想编译程序.是否可以将grid_graph与boykov_kolmogorov_max_flow一起使用?如果是这样,怎么样?如果没有,那么我想我不得不使用更通用(也可能更慢)的boost :: adjacency_list?谢谢.

c++ boost

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

从迭代器返回切片时无法推断出适当的生命周期

我有Vec<Point>一个简单的struct Point {x: f32, y: f32, z: f32}.我的矢量代表3D中数十万行(实际上可能是一行Vec<Vec<Point>>),因此我会跟踪所有行的开始/结束.

pub struct Streamlines {
    lengths: Vec<usize>,
    offsets: Vec<usize>,  // cumulative sum of lengths
    data: Vec<Point>,
}
Run Code Online (Sandbox Code Playgroud)

我想为它创建一个非消耗的迭代器,可用如下:

for streamline in &streamlines {
    for point in &streamline {
        println!("{} {} {}", point.x, point.y, point.z);
    }
    println!("")
}
Run Code Online (Sandbox Code Playgroud)

我找到了如何为一个简单的结构实现Iterator和IntoIterator?并开始copyi-err,适应:)

impl IntoIterator for Streamlines {
    type Item = &[Point];
    type IntoIter = StreamlinesIterator;

    fn into_iter(self) -> Self::IntoIter {
        StreamlinesIterator {
            streamlines: self,
            it_idx: 0
        } …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

c++ ×2

argparse ×1

boost ×1

d ×1

opencv ×1

python ×1

python-polars ×1

rust ×1