有没有办法使用与OpenCv的MinMaxLoc类似的方法来获取n个最大值的列表,而不是仅一个最大值?

时间:2019-04-06 16:58:20

标签: c# opencv opencvsharp

MinMaxLoc返回给定min的{​​{1}}和max值,但是我想对该值的input array n值进行绅数组?

是循环的唯一方法,如果是的话,如何使用max进行循环?

我的图片是这样的:

enter image description here

2 个答案:

答案 0 :(得分:1)

这是我在python中做的事情(我的c#生锈了,我在Google上找不到关于如何在 var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([lon,lat]), // i am getting lon and lat from json zoom: 5 }) }); var temp_over = new ol.layer.Tile({ source: new ol.source.XYZ({ url: 'https://tile.openweathermap.org/map/temp_new/5/' + lat +'/'+lon+'.png?appid='+appid, }), }); map.updateSize(); map.addLayer(temp_over); 中找到n个最大元素的任何信息)。

OpenCvSharp

请注意,有使用最小/最大堆来执行此操作的更有效方法,但这要编写大量代码,我不确定是否需要性能。如果您这样做,那么这些解决方案就可以用Google取代。

答案 1 :(得分:1)

假设您有一个矩形数组,则可以通过以下方式获得n个最大值:

var numValuesToGet = 2;
var inputArray = new int[,] {{1,2},{3,4},{5,6}};
var result = inputArray.Cast<int>().OrderByDescending(x=>x).Take(numValuesToGet);

同样,通过将OrderByDescending替换为OrderBy,可以得到n个最小值。