比较两个不同图像的像素,花费的时间太长
我想比较两个不同图像的像素。我正在将第一张图像的像素与第二张图像的所有像素进行比较。这是我的代码内容:
for (int i = 0; i < bitmap.getWidth(); i++) {
for (int j = 0; j < bitmap.getHeight(); j++) {
for (int k = 0 ; k<bitmpa2.getWidth(); k++) {
for (int l = 0 ; l<bitmpa2.getHeight(); l++) {
if (bitmap.getPixel(i, j) == bitmap2.getPixel(k, l))
Counter++ ;
}
}
}
}
这里计数器的值是两个图像中相同的像素数。问题是,这可行,但执行它需要很多时间,所以时间限制就是这里的问题,那么我怎样才能减少时间并获得准确的结果。欢迎任何其他可能性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
哦不,当你在 Android 中进行图像处理时请记住这一点。
,请记住,您需要先阅读 Android 文档。
Oh no, remember this in mind when you do image processing in Android.
Well, keep in mind that you need to read Android Documentation first.
如果您使用的是 API 级别 12 或更高版本,则有一个名为 Bitmap 上使用 rel="nofollow">
sameAs
来完成您想要的操作。否则,请使用getPixels
并执行以下操作:或者如果您确实想执行计数器操作来查看有多少像素同样,继续这样做。
实际上,您也可以对缓冲区做一些事情...也许像
我不确定这两种方法在性能上的比较,但如果您愿意的话,这是可以尝试的。
If you're using API level 12 or above, there's a method called
sameAs
onBitmap
to do exactly what you're looking for. Otherwise, usegetPixels
and do something like:Or if you really want to do the counter thing to see how many pixels are the same, go ahead and do that.
Actually, you can probably do something with the buffers too... Maybe something like
I'm not sure how those two methods compare in performance, but it's something to play around with if you want.
你的算法的阶数是n^4。
我想如果你
Counter
如果颜色 i 在
位图
和y中出现x次 次bitmap2
,Counter = Counter + x*y
The order of your algorithm is n^4.
I guess that you could drive that down to n^3 if you
Counter
If color i occurs x times in
bitmap
and y times inbitmap2
,Counter = Counter + x*y