狠狠撸

狠狠撸Share a Scribd company logo
C++ / OpenCV 入門 03 
熊本大学 胡(ITS)研究室 
D1 藤本賢志 
2014/09/17
std::vectorの使い方 
? Vectorは配列みたいなもの 
? 動的に確保してくれるので、要素数が未知のとき 
便利 
? Push、Popするので、C言語のスタックみたい 
? アクセス、コピー、追加、削除などが楽 
? いろんな型の配列 cv::Point、cv::Matなど
std::vectorの使い方 
? 宣言 
? std::vector <型> 変数1 
? 型 変数2 
同じ型 
? 格納 
? 変数1.push_back(変数2) 
? 表示 
??? 
2 
1 
? 全参照 Iterator 
? 直接アクセス 変数名.at(要素数)、変数名[要素数]
コーナー検出結果をVectorに格納する 
プログラムはこちら。 
https://github.com/Fujimotec/CppOpenCV/blob/ma 
ster/CppCV03.cpp
// Get the feature points from the computed corner map 
void getCorners(std::vector<cv::Point> &points, 
const cv::Mat& cornerMap) { 
// Iterate over the pixels to obtain all features 
for (int y = 0; y < cornerMap.rows; y++) { 
const uchar* rowPtr = cornerMap.ptr<uchar>(y); 
for (int x = 0; x < cornerMap.cols; x++) { 
// if it is a feature point 
if (rowPtr[x]) { 
points.push_back(cv::Point(x, y)); 
} 
} 
} 
??? 
cv::Point 
(x2,y2) 
} cv::Point 
(x1,y1) 
積んでいく感じ
std::vectorの使い方 
// Draw circles at feature point locations on an image 
void drawOnImage(cv::Mat &image, 
const std::vector<cv::Point> &points, 
cv::Scalar color = cv::Scalar(255, 255, 255), 
int radius = 3, int thickness = 2) { 
std::vector<cv::Point>::const_iterator it = 
points.begin(); 
型 
読み込みのみ 
書き込みの場合はiterator 
// for all corners 
while (it != points.end()) { 
// draw a circle at each corner location 
cv::circle(image, *it, radius, color, thickness); 
++it; 
} 
} For文でもいいよね 
for(it = points.begin(); it != points.end(); it++){} 
次の要素へ 
配列の先頭から 
配列の最後まで(これで、要素数知らなくてもいいね)
std::vectorの注意点 
? Pushしまくるとメモリリークする 
? 直接アクセスするには型、サイズを知っておくこと 
? vector::vector<Point> 
– ポインタのポインタみたいなこともできる 
– これでシーンごとの特徴点を確保したり、 
– 最後に一気に参照したり便利
参考文献 
OpenCV2 Computer Vision Application Program 
ming Cookbook 
http://amzn.to/1pjWFe3
Ad

Recommended

Cpp cv01
Cpp cv01
Satoshi Fujimoto
?
Cpp cv04
Cpp cv04
Satoshi Fujimoto
?
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
Masahiro Sakai
?
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
?
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
?
研究生のためのC++ no.3
研究生のためのC++ no.3
Tomohiro Namba
?
颁++0虫の概要(デブサミ2010)
颁++0虫の概要(デブサミ2010)
Akira Takahashi
?
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
?
[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章
Haruki Eguchi
?
颁辞辩で蝉辫谤颈苍迟蹿
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
颁辞辩で蝉辫谤颈苍迟蹿
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
ぱっと见でわかる颁++11
ぱっと见でわかる颁++11
えぴ 福田
?
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
?
[第2版]Python機械学習プログラミング 第16章
[第2版]Python機械学習プログラミング 第16章
Haruki Eguchi
?
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
?
kagami_comput2016_07
kagami_comput2016_07
swkagami
?
モナドをつくろう
モナドをつくろう
dico_leque
?
HTML5 Conference LT TensorFlow
HTML5 Conference LT TensorFlow
isaac-otao
?
Emcpp item31
Emcpp item31
mitsutaka_takeda
?
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
?
emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
?
竞技プログラミングのための颁++入门
竞技プログラミングのための颁++入门
natrium11321
?
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
?
竞技フ?ロク?ラミンク?におけるコート?の书き方とその利便性
竞技フ?ロク?ラミンク?におけるコート?の书き方とその利便性
Hibiki Yamashiro
?
画像処理での笔测迟丑辞苍の利用
画像処理での笔测迟丑辞苍の利用
Yasutomo Kawanishi
?
Mastering open cv kinectv1 marker based ar
Mastering open cv kinectv1 marker based ar
Satoshi Fujimoto
?
第2回cv勉強会@九州 LSD-SLAM
第2回cv勉強会@九州 LSD-SLAM
Satoshi Fujimoto
?

More Related Content

What's hot (20)

[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章
Haruki Eguchi
?
颁辞辩で蝉辫谤颈苍迟蹿
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
颁辞辩で蝉辫谤颈苍迟蹿
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
ぱっと见でわかる颁++11
ぱっと见でわかる颁++11
えぴ 福田
?
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
?
[第2版]Python機械学習プログラミング 第16章
[第2版]Python機械学習プログラミング 第16章
Haruki Eguchi
?
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
?
kagami_comput2016_07
kagami_comput2016_07
swkagami
?
モナドをつくろう
モナドをつくろう
dico_leque
?
HTML5 Conference LT TensorFlow
HTML5 Conference LT TensorFlow
isaac-otao
?
Emcpp item31
Emcpp item31
mitsutaka_takeda
?
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
?
emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
?
竞技プログラミングのための颁++入门
竞技プログラミングのための颁++入门
natrium11321
?
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
?
竞技フ?ロク?ラミンク?におけるコート?の书き方とその利便性
竞技フ?ロク?ラミンク?におけるコート?の书き方とその利便性
Hibiki Yamashiro
?
画像処理での笔测迟丑辞苍の利用
画像処理での笔测迟丑辞苍の利用
Yasutomo Kawanishi
?
[第2版]Python機械学習プログラミング 第14章
[第2版]Python機械学習プログラミング 第14章
Haruki Eguchi
?
颁辞辩で蝉辫谤颈苍迟蹿
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
颁辞辩で蝉辫谤颈苍迟蹿
颁辞辩で蝉辫谤颈苍迟蹿
Masaki Hara
?
ぱっと见でわかる颁++11
ぱっと见でわかる颁++11
えぴ 福田
?
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
?
[第2版]Python機械学習プログラミング 第16章
[第2版]Python機械学習プログラミング 第16章
Haruki Eguchi
?
kagami_comput2016_07
kagami_comput2016_07
swkagami
?
モナドをつくろう
モナドをつくろう
dico_leque
?
HTML5 Conference LT TensorFlow
HTML5 Conference LT TensorFlow
isaac-otao
?
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
?
竞技プログラミングのための颁++入门
竞技プログラミングのための颁++入门
natrium11321
?
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
?
竞技フ?ロク?ラミンク?におけるコート?の书き方とその利便性
竞技フ?ロク?ラミンク?におけるコート?の书き方とその利便性
Hibiki Yamashiro
?
画像処理での笔测迟丑辞苍の利用
画像処理での笔测迟丑辞苍の利用
Yasutomo Kawanishi
?

Viewers also liked (20)

Mastering open cv kinectv1 marker based ar
Mastering open cv kinectv1 marker based ar
Satoshi Fujimoto
?
第2回cv勉強会@九州 LSD-SLAM
第2回cv勉強会@九州 LSD-SLAM
Satoshi Fujimoto
?
関东コンピュータビジョン勉强会
関东コンピュータビジョン勉强会
nonane
?
Véglegesen behálózva
Véglegesen behálózva
Rezs? Weltler
?
Flattened line sheet half united
Flattened line sheet half united
halfunited
?
Studyx - революционная образовательная среда интенсивного обучения
Studyx - революционная образовательная среда интенсивного обучения
Maxim Prikhodko
?
Studyx @ Orange Fab Lab (Warsaw)
Studyx @ Orange Fab Lab (Warsaw)
Maxim Prikhodko
?
Alfredo alvarado ppt edtc6340 modified_week6
Alfredo alvarado ppt edtc6340 modified_week6
alalv020572
?
Life4
Life4
sweetja92
?
Copyright1.4
Copyright1.4
arethlake6340
?
Life5
Life5
sweetja92
?
Abf pres test-1500-ppi
Abf pres test-1500-ppi
Arjen van Beek
?
Life6
Life6
sweetja92
?
Conquering New Horizons GYLC Final Standard Res
Conquering New Horizons GYLC Final Standard Res
Maarten Edwards
?
Мой Универ @ WebReady 2015 финал в Сколково
Мой Универ @ WebReady 2015 финал в Сколково
Maxim Prikhodko
?
Aaron Murphy's Cau experience
Aaron Murphy's Cau experience
ltmurphy
?
Presentacion
Presentacion
Juan Doria
?
Mastering open cv kinectv1 marker based ar
Mastering open cv kinectv1 marker based ar
Satoshi Fujimoto
?
第2回cv勉強会@九州 LSD-SLAM
第2回cv勉強会@九州 LSD-SLAM
Satoshi Fujimoto
?
関东コンピュータビジョン勉强会
関东コンピュータビジョン勉强会
nonane
?
Véglegesen behálózva
Véglegesen behálózva
Rezs? Weltler
?
Flattened line sheet half united
Flattened line sheet half united
halfunited
?
Studyx - революционная образовательная среда интенсивного обучения
Studyx - революционная образовательная среда интенсивного обучения
Maxim Prikhodko
?
Studyx @ Orange Fab Lab (Warsaw)
Studyx @ Orange Fab Lab (Warsaw)
Maxim Prikhodko
?
Alfredo alvarado ppt edtc6340 modified_week6
Alfredo alvarado ppt edtc6340 modified_week6
alalv020572
?
Conquering New Horizons GYLC Final Standard Res
Conquering New Horizons GYLC Final Standard Res
Maarten Edwards
?
Мой Универ @ WebReady 2015 финал в Сколково
Мой Универ @ WebReady 2015 финал в Сколково
Maxim Prikhodko
?
Aaron Murphy's Cau experience
Aaron Murphy's Cau experience
ltmurphy
?
Ad

More from Satoshi Fujimoto (20)

くまあず尝罢
くまあず尝罢
Satoshi Fujimoto
?
ROHM OPEN HACK CHALLENGE 2019 加加速度による路面評価プログラムの開発
ROHM OPEN HACK CHALLENGE 2019 加加速度による路面評価プログラムの開発
Satoshi Fujimoto
?
贬辞濒辞尝别苍蝉2完全に理解した
贬辞濒辞尝别苍蝉2完全に理解した
Satoshi Fujimoto
?
次世代型电动车椅子奥贬滨尝尝の绍介
次世代型电动车椅子奥贬滨尝尝の绍介
Satoshi Fujimoto
?
20180829 ガチラボ vol.9
20180829 ガチラボ vol.9
Satoshi Fujimoto
?
20180822 ガチラボ vol.8
20180822 ガチラボ vol.8
Satoshi Fujimoto
?
20180801 ガチラボ vol.7
20180801 ガチラボ vol.7
Satoshi Fujimoto
?
础锄耻谤别を活用した贬辞濒辞尝别苍蝉アプリ开発
础锄耻谤别を活用した贬辞濒辞尝别苍蝉アプリ开発
Satoshi Fujimoto
?
惭罢耻产别谤ツール作った2
惭罢耻产别谤ツール作った2
Satoshi Fujimoto
?
ロボアプリ名:秘密の笔别辫辫别谤ちゃん
ロボアプリ名:秘密の笔别辫辫别谤ちゃん
Satoshi Fujimoto
?
秘密の笔别辫辫别谤ちゃん
秘密の笔别辫辫别谤ちゃん
Satoshi Fujimoto
?
熊本 HoloLens Meetup vol.0 「HoloLensアプリ開発コンテストビジネス部門で特別賞もらってきた」
熊本 HoloLens Meetup vol.0 「HoloLensアプリ開発コンテストビジネス部門で特別賞もらってきた」
Satoshi Fujimoto
?
熊本 HoloLens Meetup vol.0 前説
熊本 HoloLens Meetup vol.0 前説
Satoshi Fujimoto
?
熊本 HoloLens Meetup vol.0.1 前哨戦 「MTuberツール作った」
熊本 HoloLens Meetup vol.0.1 前哨戦 「MTuberツール作った」
Satoshi Fujimoto
?
Open3DでSLAM入門 PyCon Kyushu 2018
Open3DでSLAM入門 PyCon Kyushu 2018
Satoshi Fujimoto
?
20180613 ガチラボ vol.4
20180613 ガチラボ vol.4
Satoshi Fujimoto
?
20180606 ガチラボ vol.3
20180606 ガチラボ vol.3
Satoshi Fujimoto
?
20180516 ガチラボ vol.2
20180516 ガチラボ vol.2
Satoshi Fujimoto
?
札幌 HoloLens Meetup vol.1
札幌 HoloLens Meetup vol.1
Satoshi Fujimoto
?
M5Stack やーる
M5Stack やーる
Satoshi Fujimoto
?
ROHM OPEN HACK CHALLENGE 2019 加加速度による路面評価プログラムの開発
ROHM OPEN HACK CHALLENGE 2019 加加速度による路面評価プログラムの開発
Satoshi Fujimoto
?
贬辞濒辞尝别苍蝉2完全に理解した
贬辞濒辞尝别苍蝉2完全に理解した
Satoshi Fujimoto
?
次世代型电动车椅子奥贬滨尝尝の绍介
次世代型电动车椅子奥贬滨尝尝の绍介
Satoshi Fujimoto
?
础锄耻谤别を活用した贬辞濒辞尝别苍蝉アプリ开発
础锄耻谤别を活用した贬辞濒辞尝别苍蝉アプリ开発
Satoshi Fujimoto
?
惭罢耻产别谤ツール作った2
惭罢耻产别谤ツール作った2
Satoshi Fujimoto
?
ロボアプリ名:秘密の笔别辫辫别谤ちゃん
ロボアプリ名:秘密の笔别辫辫别谤ちゃん
Satoshi Fujimoto
?
秘密の笔别辫辫别谤ちゃん
秘密の笔别辫辫别谤ちゃん
Satoshi Fujimoto
?
熊本 HoloLens Meetup vol.0 「HoloLensアプリ開発コンテストビジネス部門で特別賞もらってきた」
熊本 HoloLens Meetup vol.0 「HoloLensアプリ開発コンテストビジネス部門で特別賞もらってきた」
Satoshi Fujimoto
?
熊本 HoloLens Meetup vol.0 前説
熊本 HoloLens Meetup vol.0 前説
Satoshi Fujimoto
?
熊本 HoloLens Meetup vol.0.1 前哨戦 「MTuberツール作った」
熊本 HoloLens Meetup vol.0.1 前哨戦 「MTuberツール作った」
Satoshi Fujimoto
?
Open3DでSLAM入門 PyCon Kyushu 2018
Open3DでSLAM入門 PyCon Kyushu 2018
Satoshi Fujimoto
?
Ad

Recently uploaded (7)

Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?

CppCV03

  • 1. C++ / OpenCV 入門 03 熊本大学 胡(ITS)研究室 D1 藤本賢志 2014/09/17
  • 2. std::vectorの使い方 ? Vectorは配列みたいなもの ? 動的に確保してくれるので、要素数が未知のとき 便利 ? Push、Popするので、C言語のスタックみたい ? アクセス、コピー、追加、削除などが楽 ? いろんな型の配列 cv::Point、cv::Matなど
  • 3. std::vectorの使い方 ? 宣言 ? std::vector <型> 変数1 ? 型 変数2 同じ型 ? 格納 ? 変数1.push_back(変数2) ? 表示 ??? 2 1 ? 全参照 Iterator ? 直接アクセス 変数名.at(要素数)、変数名[要素数]
  • 5. // Get the feature points from the computed corner map void getCorners(std::vector<cv::Point> &points, const cv::Mat& cornerMap) { // Iterate over the pixels to obtain all features for (int y = 0; y < cornerMap.rows; y++) { const uchar* rowPtr = cornerMap.ptr<uchar>(y); for (int x = 0; x < cornerMap.cols; x++) { // if it is a feature point if (rowPtr[x]) { points.push_back(cv::Point(x, y)); } } } ??? cv::Point (x2,y2) } cv::Point (x1,y1) 積んでいく感じ
  • 6. std::vectorの使い方 // Draw circles at feature point locations on an image void drawOnImage(cv::Mat &image, const std::vector<cv::Point> &points, cv::Scalar color = cv::Scalar(255, 255, 255), int radius = 3, int thickness = 2) { std::vector<cv::Point>::const_iterator it = points.begin(); 型 読み込みのみ 書き込みの場合はiterator // for all corners while (it != points.end()) { // draw a circle at each corner location cv::circle(image, *it, radius, color, thickness); ++it; } } For文でもいいよね for(it = points.begin(); it != points.end(); it++){} 次の要素へ 配列の先頭から 配列の最後まで(これで、要素数知らなくてもいいね)
  • 7. std::vectorの注意点 ? Pushしまくるとメモリリークする ? 直接アクセスするには型、サイズを知っておくこと ? vector::vector<Point> – ポインタのポインタみたいなこともできる – これでシーンごとの特徴点を確保したり、 – 最後に一気に参照したり便利
  • 8. 参考文献 OpenCV2 Computer Vision Application Program ming Cookbook http://amzn.to/1pjWFe3