9:18 pm Python, お買い物, カヤック, 工作・修理
カヤックのバウ先には硬質発泡ウレタンを削ってフットブレイスを作成することがあるけど内側だしどんな感じで作成するのか結構難しい。
最近、Kickstarter を見てると Rubicon 3D scanner や eora 3D のようにラインレーザーを使用したプロジェクトがいくつか見つかります。
う~む、これらは対象物を回転させるタイプなのでバウ先のスキャンには使えなさそう….
でもラインレーザーを使うと3Dスキャナって簡単に作れるの?と情報を探すと….『【俺センシング】『Webカメラで3Dスキャナ!』』「【3Dスキャナへの道】」のところに原理が….
をっ、なるほど!作れなくもないかも….とりあえず部品集め。
カメラは…Raspberry Pi を使おう。ラインレーザーとステッピングモーターは…eBay を探す。どっちも 500円しないくらいで買えるじゃん。早速注文。
ちゃんとした形にくみ上げる前にちょっと実験。
先日インストールした Python で….グレースケールにする。
[python]from PIL import Image
import ImageOps
if __name__ == "__main__":
img = Image.open("C:/devel/IMG_1234.JPG")
img2 = ImageOps.grayscale(img)
img2.save("C:/devel/IMG_1234Glay.jpg","JPEG")
[/python]
えっ?こんな簡単?
いいじゃん。
横1ラインで一番明るい1点のみにしてみる。
[python]from PIL import Image
import ImageOps
if __name__ == "__main__":
img = Image.open("C:/devel/IMG_1234.JPG")
img2 = ImageOps.grayscale(img)
img2.save("C:/devel/IMG_1234Glay.jpg","JPEG")
w, h = img2.size
pix = img2.load()
for y in range(0, h):
c=0
for x in range(0, w):
if c<pix[x, y]:
c=pix[x, y]
for x in range(0, w):
if c==pix[x, y] and c>127:
pix[x, y]=255
c=999
else:
pix[x, y]=0
img2.save("C:/devel/IMG_1234GlayLine.jpg","JPEG")
[/python]
こんな感じかな。
さぁ、計算だ!
と思ったけど、写真縮小しちゃいけないし、カメラごとに補正しなきゃいけないので計算はするのやめました。本番は Raspberry PI のカメラを使う予定なので。