画像検索

自分で集めた二次画像がかなり重複してるので検索できるようなもの作ってみようかなと。

Picasaでできるじゃんとかの突込みはなしでw

 

とりあえずPHPで使えるLibpuzzleっていうライブラリを見つけたので作ってみたけど、いまいち判定してくれないのでOpenCV使ってみようかな。

 

PHPで作ったもの

Linux環境でしか試してません。ライブラリのコンパイルのやり方は参考サイト(PHPで画像の類似度判定のできるライブラリ)を見てください。

Apache上で動かしたらタイムアウトするので(設定によるけど)実行する際はコマンドで実行してOSのリダイレクトで保存した方がいいです(ファイル保存の部分サボった)

<?php
$list = array();
if ($handle = opendir('./pictures/thum/'))
{
    while (false !== ($entry = readdir($handle)))
    {
        if (preg_match('/(\.jpg|\.png|\.gif).*/', $entry) === 1)
        {
            $list[] = $entry;
        }
    }
    closedir($handle);
}

foreach($list as $file1)
{
    echo "<b>" . $file1 . "</b><br />\n";
    echo '<img src="./pictures/thum/' . $file1 . '" /><br /><br /><br />' . "\n";
    $cvec1 = puzzle_fill_cvec_from_file('./pictures/' . $file1);
    foreach($list as $file2)
    {
        if($file1 != $file2)
        {
            $cvec2 = puzzle_fill_cvec_from_file('./pictures/' . $file2);
            $vector = puzzle_vector_normalized_distance($cvec1, $cvec2);
            echo "{$file2}:{$vector}<br />\n";
            if($vector != false)
            {
                if($vector < 0.4)
                {
                    echo $file2 . "<br />\ndistance:";
                    echo $vector;
                    echo "\n<br />" . '<img src="./pictures/thum/' . $file2 . '" / ><br />' . "\n";
                }
            }
        }
    }
    echo "<hr>";
}
?>

 

どうでもいいけど、はてなブログHTML編集でインデントされるのは地味に便利。

 

参考にしたサイト