SlideShare a Scribd company logo
OpenCVの入り口
1. OpenCVとは 
2. インストール 
3. 画像の読み込み 
4. 画像の加工 
5. 画像の保存 
6. 将来
OpenCVとは 
1. 画像処理を行うライブラリである。 
2. 大変多くのアルゴリズムが実装されている。 
3. BSDライセンスである。 
4. Python, Javaのインタフェースが用意されている。 
5. 一部、法的問題が起こる可能性があるものが含まれている。 
6. 現在のバージョンは2.xであり、2系以降C++インタフェースが導入された。
インストール 
ここから(http://opencv.org/) 
Windowsならインストーラをダウンロードする。 
Mac/Linuxならソースコードをダウンロードし、 
cmakeを使ってビルドする。 
! 
わたしはいつもこれをします。 
$> sudo port install opencv +python27
画像の読み込み 
9 #include <opencv2/highgui/highgui.hpp>! 
10 ! 
11 int main(int argc, const char * argv[])! 
12 {! 
13 // load a source image! 
14 const auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 
15 ! 
16 // create a window named "name."! 
17 const auto name = "name";! 
18 cv::namedWindow(name);! 
19 ! 
20 // show the image! 
21 cv::imshow(name, image);! 
22 ! 
23 // wait until pushing any key! 
24 cv::waitKey();! 
25 ! 
26 return 0;! 
27 } 
1. imreadの第2引数にcv::IMREAD_GRAYSCALEを渡せばグレー画像になる。 
2. jpg, bmp, png, tifなどいろいろ読み込める。 
画像を読み込む。 
窓を用意する。 
表示する。 
キー入力を待つ。
画像の加工 
画素へのアクセス-1 
8 ! 
9 #include <opencv2/highgui/highgui.hpp>! 
10 ! 
11 int main(int argc, const char * argv[])! 
12 {! 
13 // load a source image! 
14 auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 
15 ! 
16 // method (1)! 
17 for ( auto j = 0; j < image.rows; ++j ) {! 
18 auto ptr = image.ptr<cv::Vec3b>(j);! 
cv::Vec3bのポインタに変換する。 
19 for ( int i = 0; i < image.cols; ++i ) {! 
20 auto& p = ptr[i];! 
21 // auto b = p[0]; // blue! 
22 // auto g = p[1]; // green! 
23 // auto r = p[2]; // red! 
24 p[0] = 255;! 
25 }! 
26 }! 
27 ! 
28 // method (2)! 
29 for ( auto j = 0; j < image.rows; ++j ) {! 
30 auto row = image.row(j);! 
31 std::for_each(row.begin<cv::Vec3b>(), row.end<cv::Vec3b>(), [](cv::Vec3b& p){! 
32 p[0] = 255;! 
33 });! 
34 ! 
35 }! 
36 ! 
37 // method (3)! 
38 const auto& a = image.at<cv::Vec3b>(0, 0); 
イテレータも使えるので、STLと親和性がある。 
1つずつ取り出す。
画素へのアクセス-2 
9 #include <opencv2/highgui/highgui.hpp>! 
10 ! 
11 int main(int argc, const char * argv[])! 
12 {! 
13 // load a source image! 
14 auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 
15 ! 
16 // get a region of interesting! 
17 auto roi = image(cv::Rect(100, 100, 50, 50));! 
指定した領域だけを取り出す。 
18 ! 
19 // modify only the region! 
20 std::for_each(roi.begin<cv::Vec3b>(), roi.end<cv::Vec3b>(), [](cv::Vec3b& p){! 
21 p[0] = 255;! 
22 });! 
23 
画像の加工
いろいろなアルゴリズム-1 
9 #include <opencv2/highgui/highgui.hpp>! 
10 #include <opencv2/imgproc/imgproc.hpp>! 
11 ! 
12 int main(int argc, const char * argv[])! 
13 {! 
14 auto capture = cv::VideoCapture{0};! 
15 if( !capture.isOpened() ) {! 
16 return 1;! 
17 }! 
18 ! 
19 auto frame = cv::Mat{};! 
20 auto edges = cv::Mat{};! 
21 const auto name = "edges";! 
22 cv::namedWindow(name);! 
23 ! 
24 for(;;)! 
25 {! 
26 capture >> frame;! 
27 cv::cvtColor(frame, edges, CV_BGR2GRAY);! 
28 cv::GaussianBlur(edges, edges, cv::Size(7,7), 1.5, 1.5);! 
29 cv::Canny(edges, edges, 0, 30, 3);! 
30 imshow(name, edges);! 
31 if ( cv::waitKey(30) >= 0 )! 
32 {! 
33 break;! 
34 }! 
35 }! 
36 } 
グレー画像に変換する。 
ぼかす 
エッジを拾う 
Gaussian Mixture 
http://seiya-kumada.blogspot.jp/2013/03/gaussian-mixturesem.html 
http://seiya-kumada.blogspot.jp/2013/03/em-opencv.html 
! 
K-means Clustering 
http://seiya-kumada.blogspot.jp/2013/03/k-means.html 
! 
シーン認識 
http://seiya-kumada.blogspot.jp/2012/06/blog-post.html 
! 
グラフカットによる領域分割 
http://seiya-kumada.blogspot.jp/2013/04/graphcut.html 
! 
Mean Shft Filtering 
http://seiya-kumada.blogspot.jp/2013/05/mean-shift-filtering.html 
画像の加工
いろいろなアルゴリズム-2 
9 #include <opencv2/core/core.hpp>! 
10 #include <opencv2/imgproc/imgproc.hpp>! 
11 #include <opencv2/objdetect/objdetect.hpp>! 
12 #include <opencv2/highgui/highgui.hpp>! 
13 ! 
14 // http://book.mynavi.jp/support/pc/opencv2/c3/opencv_img.html! 
15 ! 
16 int main(int argc, char *argv[])! 
17 {! 
18 const auto imagename = "/Users/seiya_kumada/Projects/face-detection/Lenna.png";! 
19 auto color_img = cv::imread(imagename);! 
20 ! 
画像の読み込み 
21 // convert it to the gray scale! 
22 auto gray_img = cv::Mat {};! 
23 cv::cvtColor(color_img, gray_img, CV_BGR2GRAY);! 
グレー画像へ変換 
24 ! 
25 // normalize the brightness and increase the contrast! 
26 cv::equalizeHist(gray_img, gray_img);! 
ヒストグラムを平滑化する。 
27 ! 
28 // load the classifier! 
29 const auto cascade_name = "/opt/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml";! 
30 auto cascade = cv::CascadeClassifier {};! 
31 cascade.load(cascade_name);! 
識別器を読み込む。 
32 ! 
33 // detect faces! 
34 auto faces = std::vector<cv::Rect>();! 
35 cascade.detectMultiScale(gray_img, faces);! 
顔を検出する。 
36 ! 
37 // draw results! 
38 for( const auto& face : faces ) {! 
検出場所に円を描く。 
39 const auto center = cv::Point {! 
40 cv::saturate_cast<int>((face.x + face.width * 0.5)),! 
41 cv::saturate_cast<int>((face.y + face.height * 0.5))! 
42 };! 
43 const auto radius = cv::saturate_cast<int>((face.width + face.height) * 0.25);! 
44 cv::circle(color_img, center, radius, cv::Scalar(80, 80, 255), 3, 8, 0);! 
45 }! 
46 ! 
47 cv::namedWindow("result", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);! 
48 cv::imshow("result", color_img );! 
49 cv::waitKey(0);! 
表示する。 
50 } 
画像の加工
いろいろなアルゴリズム-3 
同じことをPythonで 
画像の加工
画像の保存 
9 ! 
10 #include <opencv2/highgui/highgui.hpp>! 
11 #include <opencv2/imgproc/imgproc.hpp>! 
12 ! 
13 int main(int argc, const char * argv[])! 
14 {! 
15 // load a source image! 
16 auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 
17 cv::imwrite("/Users/seiya_kumada/Pictures/lena.png", image);! 
18 return 0;! 
19 } 
jpg, bmp, png, tifなどいろいろなフォーマットで保存できる。
将来 
従来のデバイスは、2次元の情報を取得するものが 
主流であった。動画であろうと2次元の枠を越える 
ものではない。 
! 
最近では、kinectなどを使うことにより容易に 
距離画像、すなわち3次元画像を取得することが 
できるようになった。 
! 
3次元画像処理を行うライブラリがPoint Cloud Libraryである。 
新規アルゴリズムの実装件数は、OpenCV より多くなっている。 
次回は、PCLを紹介したい。
One more thing…
OpenCV3リリース 
現在α版がリリースされている。 
今年秋にβ版、クリスマス頃に正式版がリリースされる。 
https://www.youtube.com/watch?v=_TTtN4frMEA
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%8A_(%E7%94%BB%E5%83%8F 
%E3%83%87%E3%83%BC%E3%82%BF) 
おまけ

More Related Content

KEY
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
PDF
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
PDF
ZynqMPのQEMU
PDF
coma Creators session vol.2
PDF
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
PDF
Synverll
PDF
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
ZynqMPのQEMU
coma Creators session vol.2
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Synverll
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B

What's hot (10)

PDF
Media Art II openFrameworks 複数のシーンの管理・切替え
PDF
メディア・アート II 第1回: ガイダンス openFrameworks入門
PDF
プログラム初級講座 - メディア芸術をはじめよう
PDF
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
PDF
Media Art II 2013 第5回:openFrameworks Addonを使用する
PDF
Interactive Music II ProcessingとSuperColliderの連携1
PDF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
PDF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
PDF
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
PDF
JavaScript And Debug
Media Art II openFrameworks 複数のシーンの管理・切替え
メディア・アート II 第1回: ガイダンス openFrameworks入門
プログラム初級講座 - メディア芸術をはじめよう
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
Media Art II 2013 第5回:openFrameworks Addonを使用する
Interactive Music II ProcessingとSuperColliderの連携1
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
JavaScript And Debug
Ad

Viewers also liked (13)

PPTX
プログラマへ送る電子工作基礎の基礎
PDF
Deep learning実装の基礎と実践
PDF
Chainer v2 alpha
PDF
Escape From Hadoop: Spark One Liners for C* Ops
PDF
Assessment of cyclic triaxial behavior of shiwalik sandstone
PDF
An efficient monitoring system for sports person using wi fi communication
PDF
Partial replacement of cement and fine aggregate by
PDF
Vis 1--invertebrates-vision
PPTX
Presentacion Taller Web 2.0
PPTX
Florida Virtual School Research
PPTX
Seminario biologia molecular
PDF
Allscripts Work
PPT
2 bed apartment al arta 4 community view the greens 1156.36 sq ft
プログラマへ送る電子工作基礎の基礎
Deep learning実装の基礎と実践
Chainer v2 alpha
Escape From Hadoop: Spark One Liners for C* Ops
Assessment of cyclic triaxial behavior of shiwalik sandstone
An efficient monitoring system for sports person using wi fi communication
Partial replacement of cement and fine aggregate by
Vis 1--invertebrates-vision
Presentacion Taller Web 2.0
Florida Virtual School Research
Seminario biologia molecular
Allscripts Work
2 bed apartment al arta 4 community view the greens 1156.36 sq ft
Ad

Similar to OpenCVの入り口 (20)

PPTX
OpenCVを用いた画像処理入門
PDF
vImageのススメ(改訂版)
PDF
Siv3Dで楽しむゲームとメディアアート開発
PDF
Canvas勉強会
PDF
VerilatorとSystemC
PDF
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
PPTX
2012 kanemotolablecture2
PPT
アプリコンテスト
PDF
Zynq VIPを利用したテストベンチ
PPTX
Inside of excel 方眼紙撲滅委員会 #pyfes
PDF
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
PDF
HTML5-20100626
PDF
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
PDF
cocos2d-xとネイティブ間の連携
PDF
Azure IoT Edge で Custom Vision
PDF
How to use animation packages in R(Japanese)
PDF
Assembly Tanka on Web - Aiko Kenji
PDF
Head toward Java 16 (Night Seminar Edition)
PDF
SocketStream入門
PDF
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
OpenCVを用いた画像処理入門
vImageのススメ(改訂版)
Siv3Dで楽しむゲームとメディアアート開発
Canvas勉強会
VerilatorとSystemC
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
2012 kanemotolablecture2
アプリコンテスト
Zynq VIPを利用したテストベンチ
Inside of excel 方眼紙撲滅委員会 #pyfes
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
HTML5-20100626
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
cocos2d-xとネイティブ間の連携
Azure IoT Edge で Custom Vision
How to use animation packages in R(Japanese)
Assembly Tanka on Web - Aiko Kenji
Head toward Java 16 (Night Seminar Edition)
SocketStream入門
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング

More from cct-inc (10)

PPTX
帰宅部はじめました エクストリーム帰宅のすすめ
PPTX
勉強会 2015-02-04
PPT
勉強会 2014-12-11 (spain)
PPTX
レース観戦入門
PPTX
201411 141204212906-conversion-gate01
PPTX
141126 勉強会 xsdの活用
PPTX
Msを16倍出し抜くwpf開発2回目
PPTX
Msを16倍出し抜くwpf開発1回目
PPTX
「社会」から考える ~社会学?のすすめ~
PDF
Parser combinatorってなんなのさ
帰宅部はじめました エクストリーム帰宅のすすめ
勉強会 2015-02-04
勉強会 2014-12-11 (spain)
レース観戦入門
201411 141204212906-conversion-gate01
141126 勉強会 xsdの活用
Msを16倍出し抜くwpf開発2回目
Msを16倍出し抜くwpf開発1回目
「社会」から考える ~社会学?のすすめ~
Parser combinatorってなんなのさ

OpenCVの入り口

  • 2. 1. OpenCVとは 2. インストール 3. 画像の読み込み 4. 画像の加工 5. 画像の保存 6. 将来
  • 3. OpenCVとは 1. 画像処理を行うライブラリである。 2. 大変多くのアルゴリズムが実装されている。 3. BSDライセンスである。 4. Python, Javaのインタフェースが用意されている。 5. 一部、法的問題が起こる可能性があるものが含まれている。 6. 現在のバージョンは2.xであり、2系以降C++インタフェースが導入された。
  • 4. インストール ここから(http://opencv.org/) Windowsならインストーラをダウンロードする。 Mac/Linuxならソースコードをダウンロードし、 cmakeを使ってビルドする。 ! わたしはいつもこれをします。 $> sudo port install opencv +python27
  • 5. 画像の読み込み 9 #include <opencv2/highgui/highgui.hpp>! 10 ! 11 int main(int argc, const char * argv[])! 12 {! 13 // load a source image! 14 const auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 15 ! 16 // create a window named "name."! 17 const auto name = "name";! 18 cv::namedWindow(name);! 19 ! 20 // show the image! 21 cv::imshow(name, image);! 22 ! 23 // wait until pushing any key! 24 cv::waitKey();! 25 ! 26 return 0;! 27 } 1. imreadの第2引数にcv::IMREAD_GRAYSCALEを渡せばグレー画像になる。 2. jpg, bmp, png, tifなどいろいろ読み込める。 画像を読み込む。 窓を用意する。 表示する。 キー入力を待つ。
  • 6. 画像の加工 画素へのアクセス-1 8 ! 9 #include <opencv2/highgui/highgui.hpp>! 10 ! 11 int main(int argc, const char * argv[])! 12 {! 13 // load a source image! 14 auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 15 ! 16 // method (1)! 17 for ( auto j = 0; j < image.rows; ++j ) {! 18 auto ptr = image.ptr<cv::Vec3b>(j);! cv::Vec3bのポインタに変換する。 19 for ( int i = 0; i < image.cols; ++i ) {! 20 auto& p = ptr[i];! 21 // auto b = p[0]; // blue! 22 // auto g = p[1]; // green! 23 // auto r = p[2]; // red! 24 p[0] = 255;! 25 }! 26 }! 27 ! 28 // method (2)! 29 for ( auto j = 0; j < image.rows; ++j ) {! 30 auto row = image.row(j);! 31 std::for_each(row.begin<cv::Vec3b>(), row.end<cv::Vec3b>(), [](cv::Vec3b& p){! 32 p[0] = 255;! 33 });! 34 ! 35 }! 36 ! 37 // method (3)! 38 const auto& a = image.at<cv::Vec3b>(0, 0); イテレータも使えるので、STLと親和性がある。 1つずつ取り出す。
  • 7. 画素へのアクセス-2 9 #include <opencv2/highgui/highgui.hpp>! 10 ! 11 int main(int argc, const char * argv[])! 12 {! 13 // load a source image! 14 auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 15 ! 16 // get a region of interesting! 17 auto roi = image(cv::Rect(100, 100, 50, 50));! 指定した領域だけを取り出す。 18 ! 19 // modify only the region! 20 std::for_each(roi.begin<cv::Vec3b>(), roi.end<cv::Vec3b>(), [](cv::Vec3b& p){! 21 p[0] = 255;! 22 });! 23 画像の加工
  • 8. いろいろなアルゴリズム-1 9 #include <opencv2/highgui/highgui.hpp>! 10 #include <opencv2/imgproc/imgproc.hpp>! 11 ! 12 int main(int argc, const char * argv[])! 13 {! 14 auto capture = cv::VideoCapture{0};! 15 if( !capture.isOpened() ) {! 16 return 1;! 17 }! 18 ! 19 auto frame = cv::Mat{};! 20 auto edges = cv::Mat{};! 21 const auto name = "edges";! 22 cv::namedWindow(name);! 23 ! 24 for(;;)! 25 {! 26 capture >> frame;! 27 cv::cvtColor(frame, edges, CV_BGR2GRAY);! 28 cv::GaussianBlur(edges, edges, cv::Size(7,7), 1.5, 1.5);! 29 cv::Canny(edges, edges, 0, 30, 3);! 30 imshow(name, edges);! 31 if ( cv::waitKey(30) >= 0 )! 32 {! 33 break;! 34 }! 35 }! 36 } グレー画像に変換する。 ぼかす エッジを拾う Gaussian Mixture http://seiya-kumada.blogspot.jp/2013/03/gaussian-mixturesem.html http://seiya-kumada.blogspot.jp/2013/03/em-opencv.html ! K-means Clustering http://seiya-kumada.blogspot.jp/2013/03/k-means.html ! シーン認識 http://seiya-kumada.blogspot.jp/2012/06/blog-post.html ! グラフカットによる領域分割 http://seiya-kumada.blogspot.jp/2013/04/graphcut.html ! Mean Shft Filtering http://seiya-kumada.blogspot.jp/2013/05/mean-shift-filtering.html 画像の加工
  • 9. いろいろなアルゴリズム-2 9 #include <opencv2/core/core.hpp>! 10 #include <opencv2/imgproc/imgproc.hpp>! 11 #include <opencv2/objdetect/objdetect.hpp>! 12 #include <opencv2/highgui/highgui.hpp>! 13 ! 14 // http://book.mynavi.jp/support/pc/opencv2/c3/opencv_img.html! 15 ! 16 int main(int argc, char *argv[])! 17 {! 18 const auto imagename = "/Users/seiya_kumada/Projects/face-detection/Lenna.png";! 19 auto color_img = cv::imread(imagename);! 20 ! 画像の読み込み 21 // convert it to the gray scale! 22 auto gray_img = cv::Mat {};! 23 cv::cvtColor(color_img, gray_img, CV_BGR2GRAY);! グレー画像へ変換 24 ! 25 // normalize the brightness and increase the contrast! 26 cv::equalizeHist(gray_img, gray_img);! ヒストグラムを平滑化する。 27 ! 28 // load the classifier! 29 const auto cascade_name = "/opt/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml";! 30 auto cascade = cv::CascadeClassifier {};! 31 cascade.load(cascade_name);! 識別器を読み込む。 32 ! 33 // detect faces! 34 auto faces = std::vector<cv::Rect>();! 35 cascade.detectMultiScale(gray_img, faces);! 顔を検出する。 36 ! 37 // draw results! 38 for( const auto& face : faces ) {! 検出場所に円を描く。 39 const auto center = cv::Point {! 40 cv::saturate_cast<int>((face.x + face.width * 0.5)),! 41 cv::saturate_cast<int>((face.y + face.height * 0.5))! 42 };! 43 const auto radius = cv::saturate_cast<int>((face.width + face.height) * 0.25);! 44 cv::circle(color_img, center, radius, cv::Scalar(80, 80, 255), 3, 8, 0);! 45 }! 46 ! 47 cv::namedWindow("result", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);! 48 cv::imshow("result", color_img );! 49 cv::waitKey(0);! 表示する。 50 } 画像の加工
  • 11. 画像の保存 9 ! 10 #include <opencv2/highgui/highgui.hpp>! 11 #include <opencv2/imgproc/imgproc.hpp>! 12 ! 13 int main(int argc, const char * argv[])! 14 {! 15 // load a source image! 16 auto image = cv::imread("/Users/seiya_kumada/Pictures/lena.jpg");! 17 cv::imwrite("/Users/seiya_kumada/Pictures/lena.png", image);! 18 return 0;! 19 } jpg, bmp, png, tifなどいろいろなフォーマットで保存できる。
  • 12. 将来 従来のデバイスは、2次元の情報を取得するものが 主流であった。動画であろうと2次元の枠を越える ものではない。 ! 最近では、kinectなどを使うことにより容易に 距離画像、すなわち3次元画像を取得することが できるようになった。 ! 3次元画像処理を行うライブラリがPoint Cloud Libraryである。 新規アルゴリズムの実装件数は、OpenCV より多くなっている。 次回は、PCLを紹介したい。