小编Odr*_*rai的帖子

计算距离(差异)OpenCV

- 更新2 -

如果您使用单个摄像头计算距离,以下文章非常有用(尽管它使用的是Python而不是C++):使用Python和OpenCV查找从摄像机到对象/标记的距离

最佳链接 Stereo Webcam Depth Detection.这个开源项目的实施非常清楚.

以下是原始问题.


对于我的项目,我使用两个摄像头(立体视觉)来跟踪物体并计算距离.我用OpenCV的示例代码校准它们并生成视差图.

我已经实现了一种基于颜色跟踪对​​象的方法(这会生成一个阈值图像).

我的问题:如何使用视差图/矩阵计算到跟踪彩色物体的距离?

您可以在下面找到获取每个像素的x,y和z坐标的代码段.问题是:Point.z是cm,像素,mm?

我可以使用此代码获取跟踪对象的距离吗?

先感谢您!

cvReprojectImageTo3D(disparity, Image3D, _Q);

vector<CvPoint3D32f> PointArray;
CvPoint3D32f Point;

for (int y = 0; y < Image3D->rows; y++) {    

    float *data = (float *)(Image3D->data.ptr + y * Image3D->step);  

    for (int x = 0; x < Image3D->cols * 3; x = x + 3) 
    {   
        Point.x = data[x];        
        Point.y =  data[x+1];     
        Point.z = data[x+2];
        PointArray.push_back(Point);
        //Depth > 10
        if(Point.z > 10)
        {
            printf("%f %f …
Run Code Online (Sandbox Code Playgroud)

opencv distance vision disparity-mapping stereoscopy

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

.NET 6 中的 OData API 版本控制

我想将 OData 版本控制添加到 .NET 6 项目。项目中包含的软件包有:

显然 'Microsoft.AspNetCore.OData.Versioning' v5.0.0与 'Microsoft.AspNetCore.OData' v8.0.4兼容

两个包的组合会导致错误:

CS7069 对类型“ODataModelBuilder”的引用声称它是在“Microsoft.AspNetCore.OData”中定义的,但找不到

是否存在新包或者是否已将其合并到 Microsoft.AspNetCore.OData 包中?

Sam XU 提供了一个解决方案;创建扩展:https://devblogs.microsoft.com/odata/api-versioning-extension-with-asp-net-core-odata-8/这仍然是要走的路,还是在使用 OData 时有其他选择>= 8.0.4?

c# versioning odata .net-6.0

6
推荐指数
0
解决办法
1630
查看次数

Swagger - 隐藏 api 版本参数

是否可以隐藏“api-version”和“x-api-version”参数?

        services.AddApiVersioning(config =>
        {
            config.ReportApiVersions = true;
            config.DefaultApiVersion = new ApiVersion(1, 0);
            config.AssumeDefaultVersionWhenUnspecified = true;

            config.ApiVersionReader = ApiVersionReader.Combine(
             new QueryStringApiVersionReader(),
             new HeaderApiVersionReader()
             {
                 HeaderNames = { "x-api-version" }
             });
        });

        services.AddVersionedApiExplorer(
            options =>
            {
                // note: the specified format code will format the version as "'v'major[.minor][-status]"
                options.GroupNameFormat = "'v'VVV";

                options.DefaultApiVersionParameterDescription = "Do NOT modify api-version!";
            });
Run Code Online (Sandbox Code Playgroud)

我已经检查了how-to-set-up-swashbuckle-vs-microsoft-aspnetcore-mvc-versioning它实现了“RemoveVersionFromParameter”方法,但在这种情况下,Swagger 页面会丢失 api 版本并始终使用默认的 v1.0 . 如代码片段所示,我使用的是 QueryStringApiVersionReader 和 HeaderApiVersionReader,但我不想支持 url api 版本控制。

注意:API 确实有多个 swagger json 页面适用于所有版本(例如 V1、V1.1、V2.0)

在此处输入图片说明

.net c# api swagger-ui swashbuckle

4
推荐指数
2
解决办法
2937
查看次数

在C#中使用指令的顺序 - 按字母顺序排列

一个简短而简单的问题,但我找不到解决方案:

"是否可以按字母顺序对使用指令进行排序?"

先感谢您!

c# visual-studio

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

多线程BlockingCollection的值相同

我在C#应用程序中使用两个线程来访问相同的BlockingCollection.这工作正常,但我想要检索第一个值两次,以便两个线程检索相同的值*.

几秒钟后,我想轮询两个线程的currentIndex并删除每个值<index.因此,例如,线程的最低currentIndex是5,应用程序删除队列中索引0 -5处的项目.另一种解决方案是,如果所有线程都处理了该值,则删除队列中的值.

我怎么能做到这一点?我想我需要另一种类型的缓冲区..?

先感谢您!

*如果.Take()由thread1调用,则该项目将在集合中删除,而thread2无法再次获取相同的项目.


更新:

我想将数据存储在缓冲区中,因此例如thread1将数据保存到HDD,而thread2分析(相同)数据(并发).

c# multithreading blockingcollection

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

WPF 文本框性能

我正在开发一个在单独线程中检索数据的应用程序。在线程内“调用”委托以获取视图模型中的数据。字符串属性将用于设置 WPF TextBox 的文本(数据绑定)。

视图模型

private string _resultText;
public string ResultText
{
    get
    {
        return _resultText;
    }
    set
    {
        _resultText = value;
        RaisePropertyChanged();
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML

<TextBox Name="tbxResult" Text="{Binding ResultText, Mode=TwoWay}" TextWrapping="NoWrap" Padding="10,10,10,10" IsReadOnly="True"/>
Run Code Online (Sandbox Code Playgroud)

该线程正在检索大量数据,这会导致性能问题。UI 将被冻结,直到检索到所有数据。我已经尝试使用 Binding IsAsync="True" 属性、 TextWrapping="NoWrap",在 ResultText 的设置器中调用 Dispatcher.Invoke 并检查问题'slow-wpf-textbox'

所提供的解决方案都无法提高性能。

执行以下代码会导致相同的(性能)问题:

private void btnRetrieveResultData_Click(object sender, RoutedEventArgs e)
{
    for (int i = 0; i < 3000; i++)
    {
        tbxResult.Dispatcher.Invoke(() =>
        {
            tbxResult.AppendText("testMessage" + i);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

处理大量数据并将其显示在文本框中的解决方案/实现是什么?(它可能是另一个提供滚动和选择文本选项的控件)。

c# wpf xaml multithreading mvvm

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

环境标签/正文中的Jenkins数组变量

我想在 Jenkins 管道的环境标签/主体中定义一个字符串数组。这似乎不起作用;jenkins 无法识别数组。

环境变量值必须是单引号、双引号或函数调用。@ 第 x 行,第 y 列。我的数组= [

pipeline {
    agent {
        label 'Test'
    }

    environment {
        myArray = [
            "Item1",
            "Item2",
            "Item3"
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

下一个代码似乎有效,但我想在环境标签中包含所有字段/设置。

def myArray = [
            "Item1",
            "Item2",
            "Item3"
        ]

pipeline {
    agent {
        label 'Test'
    }

    environment {
    }
}
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

Guid.NewGuid().ToByteArray() 到字符串(数字)行是否仍然唯一

我需要生成一个由数字组成的唯一 ID。

以下结果字符串是否与?uniqueId的结果一样唯一guid.ToString()

Guid guid = Guid.NewGuid();
byte[] guidBytes = guid.ToByteArray();

// Is the result (uniqueId) as unique as guid.ToString()?
string uniqueId = string.Join(string.Empty, guidBytes); 
Run Code Online (Sandbox Code Playgroud)

c# guid

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

OpenCV相机属性对话框

几个星期前,我在网上看到你可以显示一个带有相机属性的小对话框/菜单.在此菜单中,用户可以更改对比度,亮度......但我再也找不到它了.有人知道获得此对话框的代码吗?

先感谢您!

opencv

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