空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

画像読み込み、表示のお勉強

例えばros kinect のdepth imageは

Data published on /camera/depth/image_raw is the depth in millimeters as a 16 bit unsigned integer.

のようにパブされている。

[PARTLY UNSOLVED] Raw Kinect Depth Data - ROS Answers: Open Source Q&A Forum

グレースケール16bit画像の読み込み

python - OpenCV - Reading a 16 bit grayscale image - Stack Overflow

OpenCV

#! /usr/bin/env python

import sys
import numpy
import cv2

filename = sys.argv[1]
im = cv2.imread(filename, flags = 2)  # そのまま読み込み
#im = cv2.imread(filename, flags = -1)

imgArray = numpy.asarray(im)

print imgArray

画像とビデオの読み込みと書き込み — opencv v2.1 documentation

Pillow

16bitから8bit画像へ変換

#! /usr/bin/env python

from PIL import Image
import sys
import numpy


filename = sys.argv[1]

im = Image.open(filename)
table=[ i/256 for i in range(65536) ]

im2 = im.point(table,'L')

imgArray1 = numpy.asarray(im)
imgArray2 = numpy.asarray(im2)

print imgArray1
print imgArray2

[SOLVED] PIL convert 16bit grayscale to 8 bit

表示

opencvのimshowで画像が表示されないことがある。以下参考。

参考:ROS×Python勉強会: cv_bridge | demura.net