適当に・・・

何の目的も無くブログを立ち上げてみました。更新は不定期ですね。

タスポ効果

2009年06月23日 00時44分30秒 | Weblog
タスポ効果

何をいまさらと思うかも知れないが、
「タスポ効果」をご存知だろうか?

自動販売機の成人識別機能付の自動販売機を
導入して、タバコの販売の小売店の
「約48%がタスポ導入に伴うたばこ自販機での販売金額減少分」
としている。
そして、それとは間逆にコンビニの非食料品の売り上げが約3割増し。

別にいいかと気にしていなかったがそうもいかなくなった。
実家が、タバコ屋で昔はタバコ屋の息子と言われていたのだ。

そして、実家のすぐ近くにミニストップがあるのだが、
ここが改装して新しくするので、タバコの販売の権利を
譲ってほしいと言って来ている。

ちなみに、タバコの販売の権利の売買は違法なのでできないと思うよ。
ミニストップさん。

話を聞くとフランチャイズではどこでもやってると言う。
恐ろしいな。世の中。ちゃんと監督、取り締まってください。

で、値段の話になると、今の実家の売り上げを試算して、
100万ぐらいでーと言われた時に思った。
ああ、商店を潰してより大きな売買ができるところに
権利を移すためにJTがコンビニ業界と結託して
考えた利権構造なんだと。稚拙な頭で考えてしまった。www

もちろん100万で売る気は無い。1億って言うなら話は別だけどなーwww
売る気がないので高額な値段設定。
(何度も言うようですが、タバコの販売の権利の売買は違法なので注意してください。だめですよ。コンビニに権利売っては)

というか、個人で自動販売機を導入している商店は
タスポを義務化して成人識別をした時に素直に従うしかないし、
売り上げが激減するのも判っていてなお、導入せざる得なかった。
そして、成人識別を大儀に掲げたにもかかわらず、
成人識別をしていないコンビニにタバコを下ろすのはいかがでしょうか?

コンビニの店員さんにアンケートをとった結果
未成年だと判っていても売ってしまうと言う人が大半。
クレームやトラブルに巻き込まれたくないと。w

個人商店は老後の年金の足しにとタバコの自動販売機の管理を
一生懸命してきたんだよ。置いておけば利益が出るって思ってるけど、
故障したり、品物出なかったりしてお客さんと話したりもするんだよ。

コンビニのレジにもタスポの読み取り機、義務化してくれれば、フェアだと思うな。小さな商店を潰して売り上げを上げるコンビニ。
3割増の恩恵は、個人商店の犠牲の上に成り立ってる。

監督官庁。JT。このブログが少しでも目に入ったなら、
良く考慮してくださるようお願いいたします。
小売店は本当に切実です。廃業したところにすかさず、
コンビニが立ったりしますから。

昔は、個人商店の方が頑固オヤジがいたりして
高校生がタバコを買うと、スゲー大声で怒ったりするんだよ。
後、小さい子がおつかいを頼まれて、そのおつりが
おこずかいになったりしたんだけれどね。

そういうイキな世の中じゃなくなったのかね。
この国は。

opencv

2009年06月12日 17時12分08秒 | Weblog
でオブジェクト検出器の学習

使うのは
opencv-haartraining
opencv-createsamples
(opencv-performanceって何につかうの?w)

opencv-createsamples
でサンプル作って

opencv-haartraining
で学習らしい。

やってみたけど
opencv-haartraining^HOpenCV ERROR: Insufficient memory (Out of memory)
でエラーw

デフォルトでメモリが200M とかなってるから
-memオプションってあってこれを-mem 4000とつけてみた結果はのちほど・・・

・・・・エラー
領域確保できねーよって言われたし~w

よくみると opencv-haartraining
のオプションで -w -h の項目がopencv-createsamples
の時と違う指定をしてるよ。。。

再度チャレンジ
おー

Number of features used : 3700399

Parent node: NULL

*** 1 cluster ***
POS: 4000 4000 1.000000
NEG: 1685 1
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 12.00
+----+----+-+---------+---------+---------+---------+
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
+----+----+-+---------+---------+---------+---------+

って表示が出てるからうまくいってるのか。

でも、opencvで同一人物の敷居は高そうだな~と思った瞬間がやってきたwww
顔の切り出しまでやってさてここからどうするかと調べたら、
まあ、いろいろ手法があるみたい。

一番理解できそうな固有顔法でも理解できなかった。。。orz

opencv インストール サンプル 実行

2009年06月12日 13時51分01秒 | Weblog
opencv
インテルが開発・公開しているオープンソースの
コンピュータビジョン向けライブラリってことでなんか
むか~しチラっとみておもしろそーと思ったが、難しそうなので辞めた。

で、今更なぜ?と思っていたが画像から顔の
判定をするのに便利だから。

ってことでインストール開始。

前回,RPMforgeを入れたので
yum -y install opencv
yum -y install opencv-devel
yum -y install opencv-python
で一通りのものは入る。

他のサイトで見てきたサンプルをコピーして使ってみよう。
以下コピペ&改造
sample1.pyという名で保存

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import urllib2
import os
import md5
import cgi
from opencv.cv import *
from opencv.highgui import *

def faceDetect(imgfile):
# 画像を読み込む
src_img = cvLoadImage(imgfile, CV_LOAD_IMAGE_COLOR)
src_gray = cvCreateImage(cvSize(src_img.width, src_img.height),IPL_DEPTH_8U, 1)
print src_img.width
print src_img.height

# ブーストされた分類器のカスケードを読み込む
cascade_name = "haarcascade_frontalface_default.xml"
cascade = cvLoadHaarClassifierCascade(cascade_name, cvSize(1,1))

# メモリを確保し,読み込んだ画像のグレースケール化,ヒストグラムの均一化を行う
storage = cvCreateMemStorage(0)
cvClearMemStorage(storage)
cvCvtColor(src_img, src_gray, CV_BGR2GRAY)
cvEqualizeHist(src_gray, src_gray)

# 顔検出
faces = cvHaarDetectObjects(src_gray, cascade, storage)

# 検出された全ての顔位置に枠を描画する
for c, i in enumerate(faces):
pt1 = cvPoint(int(i.x), int(i.y))
pt2 = cvPoint(int(i.x + i.width), int(i.y + i.height))
#矩形を指定
cvRectangle(src_img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0)

return src_img

def getImageFileFromURL(url, filename):
f = urllib2.urlopen(url)
save_image = file(filename, "wb")
save_image.write(f.read())
save_image.close()

if __name__ == '__main__':
#引数にURLをとる
url = sys.argv[1]

m = md5.new(url)
filename = m.hexdigest()
image_name = '/home/devel/org.jpg'

# URLから画像を取得して保存
getImageFileFromURL(url, image_name)

# 顔認識処理
img = faceDetect(image_name)

new_image_name = '/home/devel/new_' + filename + '.jpg'

# 顔認識画像を保存
cvSaveImage(new_image_name, img)

いざ実行
./sample1.py [適当な画像URL]

500
600
terminate called after throwing an instance of 'int'
アボートしました

Buu サノバビッチ
うごかね~。

なんだかわからんけど。

cascade_name = "haarcascade_frontalface_default.xml"

のところがダメみたい。

haarcascade_frontalface_default.xml をフルパスに変更
(パスがとおってりゃ動くのかもね~。)

cascade_name = "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"

再度
./sample1.py [適当な画像URL]

おーできた。

こいつはオブジェクト検出器を学習させて
他のものも認識できるらしい。

好みの顔ばっかり学習させれば、好みの顔だけヒットしてくれるのかな?
それともそれはまた別な判定が必要なのかね。w

少しやってみる。

以上。

RPMforge

2009年06月12日 02時35分11秒 | Linux
RPMforge
サードパーティ製のRPMパッケージ群のリポジトリである。

baseとかになくても探せるからモノスゲー便利。
でもrpmとか好きじゃなかったりする時もあるのよね~www

でもいれちゃう♪

説明は
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge
に載ってるけど英語だよ~。
やるきない時はぜんぜん読めない英語w

yum-priorities 入れて プライオリティー設定しろとか色々・・・
う~ん面倒w

なのでー
cd /usr/local/src
wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm(i386マシンなので64bitの時は64bitのもの使ってねー)

rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
楽チンだった。

以上

Postgresql 正規表現

2009年06月11日 14時45分37秒 | PostgreSQL
昔は「せいきひょうげん」ときいてちょっとエロいと思っていた
大バカ者の私www

正規表現だからね。

でpostgresqlのtext型のカラムのデータにHTMLのタグを
丸ごと埋め込んで表示している。
我が会社のデータベース。

HTMLのタグだけ落としたいと思ったんだけど、
replace関数だと何回も処理しなきゃならねー。
そんな面倒なことやってられっかってことで、
エロい正規表現で置換出来ね?と調べたらあったwww

regexp_replace(カラム名,'正規表現','置換後文字列')

的な感じで。8.1からだったからギリギリバージョンは対応してるな。
そろそろバージョン上げたいとおもってるんだけど~。
8.4はやくでねーかな。

※追記
>regexp_replace(カラム名,'正規表現','置換後文字列')
だと一回目にヒットしたものしか置換しねーしw
sedみたいに

regexp_replace(カラム名,'正規表現','置換後文字列','g')
とかやると一致したすべてのパターンを置換後文字列で置換してくれる。

「せいきひょうげん」 と 「ちかん」・・・・・orz
なんだかな~w 思い浮かぶのはこんなのばっかりかwww

以上