场景:
我正在尝试跟踪两个不同颜色的物体。一开始,系统会提示用户将第一个彩色物体(比如,可能是红色)放在相机前面的特定位置(在屏幕上用矩形标记)并按任意键,然后我的程序会获取帧的那一部分(ROI) 并分析其中的颜色,以找到要跟踪的颜色。同样对于第二个对象也是如此。然后像往常一样,在 HSV 颜色平面中使用 cv.inRange 函数并跟踪对象。
做了什么:
我获取了要跟踪的对象的 ROI,将其转换为 HSV 并检查了 Hue 直方图。我有两种情况如下:
(这里只有一个主要的中心峰。但在某些情况下,我会得到两个这样的峰,一个较大的峰周围有一些像素簇,第二个峰比第一个峰小,但尺寸很大且簇较小也围绕着它。我现在没有它的示例图像。但它几乎看起来像下面(在油漆中创建))
问题:
如何从这些直方图中获得最佳范围的色相值?
我的意思是,最佳范围可能是 ROI 中大约 80-90% 的像素位于该范围内。
或者有比这更好的方法来跟踪不同颜色的物体吗?
最佳答案
如果我没理解错的话,这里你唯一需要做的就是在图中找到最大值,其中最大值不一定是最高峰,而是密度最大的区域。
这是一个非常简单的不太科学但快速的 O(n) 方法。通过低通滤波器运行直方图。例如。移动平均线。平均值的长度可以假设为 20。在这种情况下,新修改直方图的第 10 个值将是:
mh10 = (h1 + h2 + ... + h20) / 20
其中 h1、h2... 是直方图中的值。下一个值:
mh11 = (h2 + h3 + ... + h21) / 20
使用之前计算的 mh10 可以更容易地计算,方法是删除它的第一个组件并在末尾添加一个新组件:
mh11 = mh10 - h1/20 + h21/20
您唯一的问题是如何处理直方图边缘的数字。您可以将移动平均线的长度缩短到可用的长度,或者您可以在已有的值之前和之后添加值。但无论哪种方式,您都无法处理边缘处的峰值。
最后,当你有这个修改后的直方图时,只得到最大值。这行得通,因为现在直方图中的每个值不仅包含他自己,还包含它的邻居。
一种更复杂的方法是对您的平均值进行加权,例如使用高斯曲线。但这不再是线性的。它将是 O(k*n),其中 k 是平均值的长度,也是高斯的长度。
关于python - 从直方图曲线中选择最佳值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111504/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o