int _currentPage = 0;
PageController _pageController = PageController(
initialPage: 0,
);
@override
void initState() {
super.initState();
Timer.periodic(Duration(seconds: 5), (Timer timer) {
if (_currentPage < 2) {
_currentPage++;
} else {
_currentPage = 0;
}
_pageController.animateToPage(
_currentPage,
duration: Duration(milliseconds: 350),
curve: Curves.easeIn,
);
});
}
@override
Widget build(BuildContext context) {
return PageView(
controller: _pageController,
children: [
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: new AssetImage(images[0]),
fit: BoxFit.cover,
),
),
),
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: new AssetImage(images[1]),
fit: BoxFit.cover,
),
),
),
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: new AssetImage(images[2]),
fit: BoxFit.cover,
),
),
),
],
);
}
我想将图像与另一个使用星标作为描述符的图像进行比较,并简短地检测描述符,因此它可以在某些图像上按预期工作,但在其他图像上(如附件2),则将抛出异常,尽管第二个图像是首先,当图像完全不同时,甚至会抛出相同的异常。
错误:
'dart:async'
ValueError:没有足够的值可解包(预期2,得到1)
图像:
主要
裁剪
我仍然会收到错误的无关图片
答案 0 :(得分:0)
这听起来好像您没有得到任何匹配。
尝试确保您有关键点。
也许您可以检查len(des_brief_o)
和len(des_brief_crop)
的返回值。
在这种情况下,我假设matches
是None
。
所以我运行了您的代码,但遇到了同样的问题:
for m in matches:
print(m)
有些匹配项仅包含一个元素或不包含任何元素。
...
[<DMatch 0x10e6b93f0>, <DMatch 0x10e6b9410>]
[<DMatch 0x10e6b9430>, <DMatch 0x10e6b9450>]
[<DMatch 0x10e6b9470>, <DMatch 0x10e6b9490>]
[<DMatch 0x10e6b94b0>, <DMatch 0x10e6b94d0>]
[]
[<DMatch 0x10e6b94f0>, <DMatch 0x10e6b9510>]
[<DMatch 0x10e6b9530>, <DMatch 0x10e6b9550>]
[<DMatch 0x10e6b9570>, <DMatch 0x10e6b9590>]
[]
[<DMatch 0x10e6b95b0>, <DMatch 0x10e6b95d0>]
[<DMatch 0x10e6b95f0>]
[<DMatch 0x10e6b9610>, <DMatch 0x10e6b9630>]
...
为什么不跳过没有匹配项或只有一个匹配项的结果:
good = []
for m in matches:
if len(m) == 2:
if m[0].distance < 0.7 * m[1].distance:
good.append(m[0])