对Rx世界来说很新,我需要实现以下行为:
我需要observable来收集值并在我至少有N个项目时将它们作为列表发出,或者如果从发出组的第一个项目开始经过了T个时间量.
我一次又一次地阅读文档,非常确定它会使用
buffer(timespan, unit, count[, scheduler])
Run Code Online (Sandbox Code Playgroud)
但问题是这里的时间跨度取决于最后一组项目.
如果可能的话,我还需要能够冲洗(强制发射)当前缓冲区,有些项目需要立即处理.我是否正确地假设在这种情况下我需要第二个observable,在每个项目之前执行处理并合并两者?
任何的想法?
Ps:我在Java工作,但我不需要Java代码,解释就足够了.
谢谢!
另一个关于检测图片中的卡片。我已经成功地隔离了图片中的卡片,我有一个很近的凸包,从这里我被卡住了。
对于上下文/约束,目标:
我使用的方法:
第1、3、6步主要是去除噪声和小伪影。
所以我几乎卡在第 9 步。我试过一个示例图片:
在调试图片上:
(结果图片是从minAreaRect中提取的)
所以轮廓是可以接受的,我可以通过调整 canny 或第一次模糊的参数来做得更好。但现在这是可以接受的,现在的问题是,我怎样才能得到将形成“minarea 四边形”的 4 个点。如您所见, minAreaRect 给出了一个不完美的矩形,并且 approxPolyDp 丢失了太多的卡片。
有什么线索可以解决这个问题吗?我尝试在使用 approxPolyDp(我使用arcLength*0.1)时使用 epsilon 值,但没有。
这种方法的另一个问题是在 canny 期间丢失了一个角(参见示例),它将不起作用(除非使用 minAreaRect 时)。但这可能可以在之前(通过更好的预处理)或之后解决(因为我们知道宽/高比)。
不是在这里要求代码,只是想知道如何解决这个问题,
谢谢!
编辑:Yves Daoust 的解决方案:
结果:
编辑 2:使用 Hough 变换(而不是 …