Help us understand the problem. What is going on with this article?

Python初心者がScikit-imageの例題を自分用に使うためのヒント

More than 1 year has passed since last update.

Python初心者のためのOpenCV
では、OpenCVの(opencvのディレクトリ)\sources\samples\python2にあるPythonの例題の実行の仕方を書いた。

OpenCV-Python & Scikit-image -「必見『OpenCV-Python Tutorials』2」への追記
では、Scikit-imageの配布元からの例題のダウンロードと実行の仕方を示した。

「OpenCV-Python Tutorials」と「実践コンピュータビジョン」とscikit-learn
では、scikit-learnの配布元からの例題のダウンロードと実行の仕方を示しました.

これらの例題では、スクリプトとその必要なデータとがセットで含まれているので、使い始めることができます。
OpenCV-PythonやScikit-image, scikit-learnの魅力のため、Pythonに引き寄せられて来る人が増えてきています。

 この記事では、Scikit-imageの例題を、ほんの少しだけ改変して、遊んでみるために、Python初心者向けの内容を書いてみます。

ヒント:入力画像を差し替えてみよう。

参考記事 【シリーズ】「pythonとOpenCVを用いたCVプログラミング 」第8回: OpenCV-python① 画像の入出力と可視化(highGUI))
 OpenCV-Python、scikit-image, scikit-learnは全て共通のデータ形式を使っている。そのため、
 scikit-imageの例題のスクリプトでの入力データをOpenCV-Pythonのcv2.imread("lena.jpg")などと置き換えることができる。
 入力データを差し替えてみると、いろんなことがわかってくる。

課題:
Normalized Cut

の例題で、入力画像を変えてみよう。

ヒント:縮小画像の入力

 入力画像の大きさを変えてみよう。
 cv2.resize()を検索してください。
python+Opencvによる画像処理5(リサイズ)
cv2.resize()の戻り値が縮小後の画像なので、
 関数の入力と出力との区別がつきやすいのがPythonのライブラリの特徴です。
 

課題:

Normalized Cut

の例題で、入力画像を半分に縮小して動作させてみよう。

 

ヒント:部分画像を切り出してみよう。

OpenCV-Pythonや、scikit-image, scikit-learnではいずれも共通のデータ形式を利用している。カラー画像ではimg[y座標, x座標, BGR]の順に添え字を指定します。グレースケール画像ではgray[y座標,x座標]の添え字です。
画像の大きさを知るためには
[h, w] = img.shape[:2]
[h, w] = gray.shape
となります。
y座標の範囲は、最小の値は0で最大値がh-1となります。
x座標の範囲は、最小の値は0で最大値がw-1となります。

subImg = img[yu:yd, xl:xr, :]
としたとき、(yu, yd)の点は部分画像に含まれますが、
ydの位置とxrの位置は、部分画像に含まれないことに留意してください。

参考記事PythonとOpenCVで画像を分割する

課題:

上記のNormalized Cutで入力画像を部分画像にしてみてください。

付記:

 OpenCV-C++の場合にはcv::Mat のデータ形式を利用しています。
この場合も
cv::Mat img = cv2.imread("lena.jpg", 0);

cv::Matの要素にアクセスするには
最初の添え字がy、次の添え字がxになっています。
このことは、numpy.arrayを使っているOpenCV-Pythonでも、cv::Matを使っているOpenCV-C++でも共通です。
img.at(y,x)

ヒント2 複数のファイルを処理する

nonbiri15
Python, scikit-learn, OpenCV使いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away