• ベストアンサー

flickrやフォト蔵、Yahoo!画像検索のAPIを使ってメガネ男子

flickrやフォト蔵、Yahoo!画像検索のAPIを使ってメガネ男子の写真だけひたすら集めてくるサイトを作りたいと思ってます。 APIのサンプルコードがあるのはわかるのですが、具体的に何をしたらいいのかがわかりません。 ドメインはすぐに作れます。 サーバーもレンタルサーバーと共用サーバー持ってます。 PHP初心者なので、まずどこから始めたらいいのか教えてもらいたいです。 よろしくお願いします。

noname#181401
noname#181401
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#243182
noname#243182
回答No.1

いきなりメガネ男子のみを抽出することは難しいかもしれませんが、まずは顔認識から初めてみてはいかがでしょうか。 OpenCVというライブラリをPHPから利用することで、顔認識が出来るそうです。メガネ男子のキーワードで画像を検索し、これに対して顔認識の処理を施すことで、顔の部分のみ抽出できるでしょう。さらにこれをメガネで男子という判定をするための処理を独自に実装し、目的を達成するのです。 こんな感じでどうですか。

参考URL:
http://sourceforge.net/projects/opencvlibrary/files/
noname#181401
質問者

お礼

遅くなってすみません! 咳喘息と百日咳になってネットできませんでした…。 色々と顔認識を調べさせてもらいます。 ありがとうございました!!

関連するQ&A

  • flickrでの画像を取得について

    次の関数はflickr.interesting.getListでflickrから人気の高い画像を取得する関数ですが、パラメータのdateを指定すると Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\flickr-interesting.php on line 34 と表示されます。 date => 2013-07-24,の行を消すと画像が正常に表示されます。 dateを指定するにはどうすればいいでしょうか? function search_photos($per_page, $page) { $proxy = array( "http" => array( "proxy" => "tcp://大学のIPアドレス", 'request_fulluri' => true, ), ); $proxy_context = stream_context_create($proxy); $params = array( 'method' => 'flickr.interestingness.getList', 'api_key' => API_KEY, 'date' => 2013-07-24, 'per_page' => $per_page, 'page' => $page ); $pictureSize = "b"; $query = http_build_query($params, '', '&'); $url = 'http://www.flickr.com/services/rest/?' . $query; //$data = @simplexml_load_string(@file_get_contents($url)); $data = @simplexml_load_string(@file_get_contents($url, false, $proxy_context)); if ($data === false) { return 'エラー' . PHP_EOL; } $ret = ''; $format = '<a href="http://www.flickr.com/photos/%s/%s/"><img src="http://farm%s.static.flickr.com/%s/%s_%s_m.jpg" alt="%s"></a>' . PHP_EOL; foreach ($data->photos->photo as $p) { $ret .= sprintf($format, $p['owner'], $p['id'], $p['farm'], $p['server'], $p['id'], $p['secret'], $p['title'], $pictureSize); } return $ret; }

    • ベストアンサー
    • PHP
  • flickrから画像を取得するプログラムが動かない。

    こんばんわ。 flickrという画像サイトから画像を取得するという方法を試して見たのですが、うまく動きませんでした。何も表示されませんでした。 flickrのキーは取得してあり、キーも、入力した状態です。 レンタルサーバーにて実行しています。 <?php define (APIKEY , "[取得したキー]"); $searchWord = "猫"; //検索したい画像のキーワード $pictureSize = "t"; //画像サイズ $url = "http://www.flickr.com/services/rest/?" . "method=flickr.photos.search" . "&format=rest" . "&api_key=".APIKEY . "&per_page=20" . "&license=1,2,3,4,5,6" . "&extras=owner_name" . "&text=".urlencode($searchWord); $xml = simplexml_load_file($url); //print_r($xml); $iLoop = 0; echo "<table>"; foreach($xml->photos->photo as $photoValue){ if( $iLoop == 0){ echo "<tr><td>"; } else { echo "<td>"; } $farmId = $photoValue['farm']; $serverId = $photoValue['server']; $photoId = $photoValue['id']; $secret = $photoValue['secret']; $owner = $photoValue['owner']; $ownername = $photoValue['ownername']; //改行はレイアウトのため echo "<a href=\"http://www.flickr.com/photos/{$owner}/{$photoId}/\"> <img src=\"http://farm{$farmId}.static.flickr.com/{$serverId}/ {$photoId}_{$secret}_{$pictureSize}.jpg\" /></a><br>"; echo "author by <a href=\"http://www.flickr.com/photos/{$owner}/\"> {$ownername}</a>"; $iLoop++; if( $iLoop == 4){ echo "</td></tr>"; $iLoop = 0; } else { echo "</td>"; } } if( $iLoop != 0 ){ echo "</tr>"; } echo "</table>"; ?> 掲載していたHPはこちら http://webservice.kabufuru.net/flickr/photosPhp.php

    • 締切済み
    • PHP
  • Yahoo API  WEB検索の事で!

    Yahoo API を利用してWEB検索の機能を使おうと考えています。 そこで、 Yahoo!デベロッパーネットワーク - サンプルコード集 ;検索サンプルコード http://developer.yahoo.co.jp/sample/search/sample1.html このページよりphpファイルをダウンロードして試し一応成功しました。 http://cgi.geocities.jp/ydevnet/sample/search/sample1/YJSearchExample.php (このページはサンプルです) 検索結果を見てみるとごちゃごちゃしていて見にくいです。 そこで以下のようなページにしたいのですが http://phpspot.org/lab/yapi/web.php?q=yahoo 簡単に修正できないでしょうか? ファイルは ・common.php ・YJSearchExample.php なのですが、どの辺りを修正すればいいでしょうか? ご指導よろしくお願いします。

    • 締切済み
    • PHP
  • Yahoo画像検索API時のキャッシュ回避方法

    http://phpspot.net/php/pgPHP%E3%81%A7Yahoo!API%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB.html 上記URLに掲載されているAPIサンプル(yapi.zip)を使っているのですが、 cache ディレクトリに検索されたファイルが蓄積されサーバー容量を圧迫して困っています。 そこで、このcache機能をオフにしたいのですが、 zipファイル内のweb.phpのどの部分を修正すればよいのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • flickrのAPIを用い、任意の写真を表示する方法

    flickrのAPIを用いて、個人のページに、指定した写真を表示させたいと思っています。 こちらのページを、参考にして(そのままのソースで)、flickrにアップロードされた最新の写真の中から、「HDR」というタグが付いた写真は表示させられるようになりました。 http://itpro.nikkeibp.co.jp/article/COLUMN/20061101/252356/?ST=swd-tech これを、写真を“撮影した時の時間”で表示させたいと思っています。 たとえば、2004年1月16日に撮った写真を表示、といった具合です。 flickrは、HPを見ると、taken on~ と写真を撮った時のデータも表示されており、撮影した時間もAPIから取ってこれると思うのですが、以下のソースをどのように変えたらよいでしょうか。 よろしくお願いいたします。 flickr-search.js -------------------------- // 画像検索を行う関数 function photo_search ( param ) { // APIリクエストパラメタの設定 param.api_key = 'APIキー'; param.method = 'flickr.photos.search'; param.per_page = 9; param.sort = 'date-posted-desc'; param.format = 'json'; param.jsoncallback = 'jsonFlickrApi'; // APIリクエストURLの生成(GETメソッド) var url = 'http://www.flickr.com/services/rest/?'+ obj2query( param ); // script 要素の発行 var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.src = url; document.body.appendChild( script ); }; // 現在の表示内容をクリアする function remove_children ( id ) { var div = document.getElementById( id ); while ( div.firstChild ) { div.removeChild( div.lastChild ); } }; // オブジェクトからクエリー文字列を生成する関数 function obj2query ( obj ) { var list = []; for( var key in obj ) { var k = encodeURIComponent(key); var v = encodeURIComponent(obj[key]); list[list.length] = k+'='+v; } var query = list.join( '&' ); return query; } // オブジェクトからクエリー文字列を生成する関数 function obj2query ( obj ) { var list2 = []; for( var key in obj ) { var k = encodeURIComponent(key); var v = encodeURIComponent(obj[key]); list2[list2.length] = k+'='+v; } var query = list2.join( '&' ); return query; } // Flickr検索終了後のコールバック関数 function jsonFlickrApi ( data ) { // データが取得できているかチェック if ( ! data ) return; if ( ! data.photos ) return; var list = data.photos.photo; if ( ! list ) return; if ( ! list.length ) return; // 現在の表示内容(Loading...)をクリアする remove_children( 'photos_here' ); // 各画像を表示する var div = document.getElementById( 'photos_here' ); for( var i=0; i<list.length; i++ ) { var photo = list[i]; // a 要素の生成 var atag = document.createElement( 'a' ); atag.href = 'http://www.flickr.com/photos/'+ photo.owner+'/'+photo.id+'/'; // img 要素の生成 var img = document.createElement( 'img' ); img.src = 'http://static.flickr.com/'+photo.server+ '/'+photo.id+'_'+photo.secret+'_s.jpg'; img.style.border = '0'; atag.appendChild( img ); div.appendChild( atag ); } } search-hdr.html ------------------------------ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Flickr APIによる画像検索 (text)</title> <script type="text/javascript" src="flickr-search.js"></script> <script type="text/javascript"><!-- window.onload = function () { photo_search({ text: 'HDR' }); } --></script> </head> <body> <hr> <div id="photos_here">Loading...</div> <hr> </body> </html>

  • 楽天商品検索APIをjavascriptで利用

    こんにちは。 楽天の商品検索結果一覧をHTMLファイルにロードして表示したいと思います。 楽天商品検索APIを利用します。 http://webservice.rakuten.co.jp/api/itemsearch/ ThinkIT http://thinkit.co.jp/article/1103/1 こちらのサイトで紹介されている、 http://www.h-fj.com/thinkit/rest/jquery.html このサンプルを利用すればできそうなのですが、楽天APIは一度に表示できる商品が30個までという制限があるため(hitsパラメータの上限が30)、pageパラメータを、page=1、page=2と切り替えていかなければすべての検索結果を表示できません。 そのpageパラメータの指定を簡単に切り替えて表示していく方法がよくわからず、皆様にアドバイスいただきたいです。 理想は、HTMLページをロードした時点で1ページ目の30商品を表示し、「次へ」ボタンまたは数個配置したページボタンを押すことで次のページの商品に切り替えていくというシンプルなものです。使っているサーバーではPHPは使えずJavascriptとCSSのみです。 当方Javascriptは勉強中で、まだ初歩的な文字列操作やサンプルの改変ぐらいしかできません。恐れ入りますが、もし可能でしたらサンプルコードなど教えていただけると助かります。 何卒よろしくお願いいたします。

  • flickrAPIでの画像取得について

    下のphpスクリプトでflickrAPIを用いて画像を取得しようとしたらエラーが起こって取得できません。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>flickr API サンプル</title> </head> <body> <h1>flickr API サンプル</h1> <?php set_time_limit(60); //flickrから写真を検索してimgタグを返す関数 function search_flickr($keyword,$limit){ //取得したAPIキーを設定 $api_key = '(僕のAPIキー)'; //メソッドに写真検索を設定 $method = 'flickr.photos.search'; //検索キーワードをURLエンコードして設定 $text = urlencode($keyword); //人気の高い順に検索 $sort = "interestingness-desc"; //取得件数を設定 $per_page = $limit; //URLを生成 $url = 'http://www.flickr.com/services/rest/?'. 'method='.$method. '&api_key='.$api_key. '&text='.$text. '&sort='.$sort. '&per_page='.$per_page; //取得したXMLファイルをパースし、オブジェクトに代入 $data = simplexml_load_file($url) or die("XMLパースエラー"); //表示写真サイズをmサイズに設定 $size = "_m"; //変数初期化 $ret = ""; //取得できた写真の数だけループ処理 foreach($data->photos as $photos){ foreach($photos->photo as $photo){ $ret .= '<a href="http://www.flickr.com/photos/'.$photo['owner'].'/'.$photo['id'].'/">'; $ret .= '<img src="http://farm'.$photo['farm'].'.static.flickr.com/'.$photo['server'].'/'.$photo['id'].'_'.$photo['secret'].$size.'.jpg" alt="'.$photo['title'].'">'."\n"; $ret .= '</a>'; } } return $ret; } //検索ワード $keyword = "sea"; //取得数 $limit = 10; //写真を検索して表示 echo search_flickr($keyword,$limit); ?> <p>powerd by <a href="http://www.flickr.com/services/api/">Flickr Services</a></p> </body> </html> 表示されたページはこうなりました。 flickr API サンプル Warning: simplexml_load_file(http://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=(僕のAPIキー)&text=sea&sort=interestingness-desc&per_page=10): in C:\xampp\htdocs\flickrAPI.php on line 38 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=(僕のAPIキー)&text=sea&sort=interestingness-desc&per_page=10" in C:\xampp\htdocs\flickrAPI.php on line 38 XMLパースエラー そこでhttp://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=(僕のAPIキー)&text=sea&sort=interestingness-desc&per_page=10にアクセスすると次のようなXMLが表示されました。 <?xml version="1.0" encoding="UTF-8"?> -<rsp stat="ok">-<photos total="9663727" perpage="10" pages="966373" page="1"><photo title="row" isfamily="0" isfriend="0" ispublic="1" farm="1" server="55" secret="86cffac801" owner="89972557@N00" id="148800272"/><photo title="Live" isfamily="0" isfriend="0" ispublic="1" farm="8" server="7381" secret="d5af918c8c" owner="36621592@N06" id="9017742627"/><photo title="In search of the pot of gold at the end of the Rainbow..." isfamily="0" isfriend="0" ispublic="1" farm="4" server="3717" secret="bf47d94889" owner="56936646@N07" id="8851282635"/><photo title="Melting ice 130424 F368" isfamily="0" isfriend="0" ispublic="1" farm="8" server="7404" secret="907a7c260e" owner="44855005@N04" id="8771141696"/><photo title="Coachella Valley" isfamily="0" isfriend="0" ispublic="1" farm="8" server="7310" secret="5d47f6cb45" owner="53760536@N07" id="8729902328"/><photo title="End of a summer day" isfamily="0" isfriend="0" ispublic="1" farm="8" server="7434" secret="46a80bb865" owner="72179079@N00" id="8722395239"/><photo title="angles of sea" isfamily="0" isfriend="0" ispublic="1" farm="9" server="8253" secret="32fc571841" owner="39638504@N07" id="8696358702"/><photo title="Summer sunset ( view larger size: please press "L")" isfamily="0" isfriend="0" ispublic="1" farm="9" server="8261" secret="21c4642b39" owner="72179079@N00" id="8688567245"/><photo title="Smoo Cave II" isfamily="0" isfriend="0" ispublic="1" farm="9" server="8403" secret="b6d637d603" owner="8407953@N03" id="8672345286"/><photo title="In The Middle of Nowhere" isfamily="0" isfriend="0" ispublic="1" farm="9" server="8533" secret="1ba0e8574c" owner="8407953@N03" id="8666924709"/></photos></rsp> どうすればエラーが直るでしょうか?

    • ベストアンサー
    • PHP
  • APIを使ってみたい

    YAHOO!などで公開している、APIを使ってみたいののですがイマイチどう使うのかが分かりません。 漠然としたイメージで、理解できていません。便利そうなのは、分かるのですが・・ 最近、PHPを始めた初心者です。 (1)どんなメリットがあるのか? (2)具体的なサンプルを示したページ などを教えていただけるとありがたいです。

  • クロスドメインの制限について

    クロスドメインの制限について質問させてください。 手元にあるJavaScriptの書籍のサンプルにYahooAPIにアクセスして結果を取得する サンプルがあります。そこではJavaScriptからYahooAPIを直接呼ばずにPHPのプログラムを 介してYahooAPIを実行し結果を取得しています。JavaScriptでは自分の属するドメインと異なる ドメインにはアクセスできないようになっているためそのようなことをしていると書いてあります。 一方、インターネット上のGoogleMapのAPIのサンプルコードではHTML内にAPIのURLを書いて 色々な操作を実現しているように見えるのですがクロスドメインの制限は適用されないのでしょうか。 YahooAPIとGoogel API では仕組みが異なるのでしょうか。

  • APIで検索結果を1件だけ取得する方法を教えてください

    日曜プログラマーのため、プログラミング知識が乏しいのですが質問させてください。 「Simple API」というサイトのWikipedia APIのサービスを利用しようと考えているのですが、 サイト上で紹介されているPHPサンプルですと、キーワードによっては複数件の結果を取得してしまいます。 --------以下サンプル------- <?php // キーワード指定 $keyword = "東京"; // APIのURL $url = "http://wikipedia.simpleapi.net/api?keyword=".urlencode($keyword)."&output=php"; // データを取得 $data = file_get_contents($url) ; // PHPシリアライズパーサーを利用して解析し、配列に入れる $array = unserialize($data); // 配列をforeachで表示するデモ print "<H1>Wikipedia情報</H1>"; foreach ($array as $key => $value) { print "<a href=\"".$value[url]."\"><strong>".$value[title]."</strong></a>\n<br/>". $value[body] ."<hr/>\n\n"; } ?> ------------------ 私のやりたいこととしては、検索キーワードに対して1件目の結果のみ表示させたいのですが、うまいやり方がわからず困っています。 (データ取得自体は1件のみでも複数件でも構わないのですが、表示は1件目のみさせたいです) どなたか1件目の結果のみ表示されるサンプルコードをご教授願えませんでしょうか。 よろしくお願いいたします。 【SimpleAPI vol.3 - Wikipedia API】 http://wikipedia.simpleapi.net/

    • ベストアンサー
    • PHP

専門家に質問してみよう