とある理系院生の勉強日記

モチベーション維持用兼備忘録

ROS kineticをUbuntu16.04に入れる

Ubuntu16.04.1LTSにROS kineticを入れる

 

基本的に以下のサイトの通りやっていけばいい

http://wiki.ros.org/ja/kinetic/Installation/Ubuntu

 

下記は概要のみ、1つずつ実行していけば入る

 $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

$ sudo apt-get update $ sudo apt-get install ros-kinetic-desktop-full

$ sudo rosdep init

$ rosdep update

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc $ source ~/.bashrc

$ sudo apt-get install python-rosinstall

OpenCVでSobelオペレータをやってみる

自分の認識ですが...

Sobelオペレータは微分オペレータの課題である画像中のノイズに反応してしますことを解決したもの。

微分方向には微分オペレータを適用し、法線方向には平滑化を行う。

 

1画像をグレースケールに変換

2Sobel関数を利用

 

以下サンプルはx方向とy方向にそれぞれSobelオペレータを適用したもの。

 

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("lena.jpeg")

img_gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

img_sobel_x = cv2.Sobel(img_gray, cv2.CV_32F, 1, 0)
img_dst_x = cv2.convertScaleAbs(img_sobel_x)

img_sobel_y = cv2.Sobel(img_gray, cv2.CV_32F, 0, 1)
img_dst_y = cv2.convertScaleAbs(img_sobel_y)

cv2.namedWindow("sobel_x")
cv2.imshow("sobel_x", img_dst_x)
#cv2.imwrite("lena_sobel_x.jpeg", img_dst_x)

cv2.namedWindow("sobel_y")
cv2.imshow("sobel_y", img_dst_y)
#cv2.imwrite("lena_soble_y.jpeg", img_dst_y)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

f:id:youthtia:20171017195508j:plain

f:id:youthtia:20171017195524j:plain

OpenCVで画像の画素をいじる

1 画像を読み込む

2 split()関数で画像のチャンネルの分割を行う

3 merge()関数でBGRをいじる

 

OpenCVはBGRの順にカラーが並ぶためsplit()関数でカラー画像のチャンネルを分割した際には配列の[0]が青、[1]が緑、[2]が赤となる。

 

以下サンプルプログラムは青を赤に、赤を青に変更している

 

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("lena.jpeg")

#チャンネルの分割
img_bgr = cv2.split(img)

#BGR→RGB
changed_img = cv2.merge( (img_bgr[2], img_bgr[1], img_bgr[0]) )

cv2.namedWindow("lena")
cv2.namedWindow("changed_lena")

cv2.imshow("lena", img)
cv2.imshow("changed_lena", changed_img)

#cv2.imwrite("changed_lena.jpeg", changed_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

変更した結果は以下の通り。

 

f:id:youthtia:20171013021402j:plain

OpenCVでカメラの読み込み

VideoCaptureオブジェクトの生成が必要になることだけ注意

 

以下サンプル

 

# -*- coding: utf-8 -*-

import cv2

cv2.namedWindow("camera")

cap = cv2.VideoCapture(0)

while(True):
#retはreadできたかどうかのフラグ
ret, img = cap.read()

cv2.imshow("camera", img)

ch = cv2.waitKey(1)
if ch == ord('q'):
break

cv2.destroyAllWindows()

OpenCVで画像の読み込み・保存

1 画像を読み込む

2 グレースケール画像を保存する

 

OpenCVで画像を読み込む関数としてimread()がある。

第1引数は画像のファイル名を指定

第2引数を1にするとカラー画像で、0にするとグレースケール画像で読み込む

 

以下サンプル

カラー画像とグレースケール画像でlena画像を読み込み表示する。また、グレースケールのlena画像を保存するプログラム。

 

# -*- coding: utf-8 -*-

import cv2

#カラー画像で読み込み
img_color = cv2.imread("lena.jpeg",1)
#グレースケール画像で読み込み
img_gray = cv2.imread("lena.jpeg",0)

#フレームの名前
cv2.namedWindow("color")
cv2.namedWindow("gray")

#フレーム内に表示
cv2.imshow("color", img_color)
cv2.imshow("gray", img_gray)

#グレースケール画像をlena_gray.jpegという名前で保存
cv2.imwrite("lena_gray.jpeg", img_gray)

#キーイベントが起こるまで表示し続ける 0は無限時間
cv2.waitKey(0)

#ウィンドウの破棄
cv2.destroyAllWindows()

 

保存されたグレースケールのlenaは以下。

 

f:id:youthtia:20171012172519j:plain

AnacondaにPyMCをいれる

1 >conda update conda

2 >conda update --all

3 >conda install pymc

4import pymc でエラーが出ないかチェック

Windows10でOpenCVの環境を構築する(Python3系)

1 Window用のAnaconda3をインストール(パスを通すチェックボックスをチェックしておくことを忘れない)

http://www.lfd.uci.edu/~gohlke/pythonlibs/ からOpenCVOpenCV contribがセットになっているwhl拡張子のファイルをダウンロードする(自身のダウンロードしたときはopencv_python‑3.3.0+contrib‑cp36‑cp36m‑win_amd64.whl)

3 Anaconda3ディレクトリの直下に2でダウンロードしたwhlファイルを置く

4 コマンドプロンプトでAnaconda3ディレクトリに移動

5 以下のコマンドを打つ

>python -m pip install --upgrade pip

>pip install "ダウンロードしたwhlファイル名"

 

実行して以下が出てきたらOK

Processing c:\users\hiroki\anaconda3\opencv_python-3.3.0+contrib-cp36-cp36m-win_amd64.whl
Installing collected packages: opencv-python
Successfully installed opencv-python-3.3.0+contrib

 

6 コマンドプロンプトpythonを起動してcv2をインポートできるか確かめてい見る

> python

>>>import cv2

 

下のようなエラーが出てきたらAnacondaで入れたnumpyのバージョンが低い

RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa

 

この場合はnumpyのバージョンを上げればいいので以下のコマンドを打つ

>pip install --upgrade numpy

 

7 作業ディレクトリに画像を用意(業界では有名なlenaさんをサンプルプログラムでは使います。lena.jpegで保存してください)

f:id:youthtia:20171012030600j:plain

8 プログラムsample.pyを作成し以下コマンドで実行

>python sample.py

 

sample.pyは以下のコード

# -*- coding: utf-8 -*-

import cv2
img = cv2.imread("lena.jpeg")

cv2.namedWindow("window")
cv2.imshow("window", img)
cv2.waitKey(0)
cv2.destroyAllWindows()