-1

如何将一个带有相机的图像令牌与存储在 sd 卡中的所有其他图像进行比较并显示结果?

public class SearchForFaces extends Activity {

    Bitmap bitmapOriginale;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle b1 = getIntent().getExtras();
        String cin= b1.getString("cin");        

        //getting the image
        File sdCard = Environment.getExternalStorageDirectory();
        File directory = new File (sdCard.getAbsolutePath() + "/Student");
        File file = new File(directory, cin+"jpg");
        try {
            FileInputStream streamIn = new FileInputStream(file);
            bitmapOriginale = BitmapFactory.decodeStream(streamIn);
            streamIn.close();
        } catch (IOException e) {
            Log.d("SearchForFaces Exception", e.getMessage());
        }
        if(bitmapOriginale.sameAs(//images from sdcard)) 
        {
            //display founded image
        }
    }
}
4

2 回答 2

0

另请查看此博客http://mihaifonoage.blogspot.com/2009/09/displaying-images-from-sd-card-in.html它展示了如何从 sd 卡读取图像。阅读它们后,您可以使用您的 sameAs() 编写方法来比较它们。

于 2012-09-14T01:03:59.917 回答
0

我认为,没有必要读取所有图像..如果您想比较相机中的图像,您可以“轻松”拍摄 DCMI 文件夹中的图像。但是好的,用户将在另一个文件夹中移动一些文件。因此,在这种情况下,我建议只打开第一个文件夹,读取其中的文件并检查格式,然后打开另一个文件夹,读取其中的文件并再次检查格式并将路径保存到 jpg 文件。
所以在这种情况下,foreach 很容易,而 cykl 或者你可以用递归来做。您将拥有一些 ArrayList(linkedList 等),并且在此列表中您可以放置​​路径。然后只需调用您的 sameAs 方法。
在这你可以使用Environment.getExternalStorageDirectory().listFiles();

但是..我不确定您的“算法”是否有效..图像识别是计算机科学中非常难的部分..如果您不知道如何获取 SD 卡上的文件..算法可能不起作用..
但是如果您想通过逐字节比较检查相似性,然后就可以了..

于 2012-09-14T01:36:38.923 回答