cvFlipで画像を反転

#contents

*void cv::flip(InputArray src, OutputArray dst, int flipCode); [#zacd0fa9]

画像を水平、垂直に反転する関数flip

**引数 [#q95f9037]
-src:[[cv::Mat>OpenCVの画像クラス/構造体#fe1ffe4a]]型 の入力画像
-dst:[[cv::Mat>OpenCVの画像クラス/構造体#fe1ffe4a]]型 の出力画像
-flipCode:int型の反転軸。詳細は[[解説>画像の反転#cf58e630]]参照

**返り値 [#u0779373]
-void型なのでなし

*void cvFlip(IplImage* src, IplImage* dst, int mode); [#i13f3460]

画像を反転してくれる関数cvFlip.その際原点は移動しない

**引数 [#n1425b8e]
-src:IplImage*型の入力画像.CvMat*型でも可.
-dst:IplImage*型の反転画像.CvMat*型でも可.省略可
-mode:int型の反転軸.省略可

**返り値 [#m8cdef2c]
-void型なのでなし

*void cvConvertImage( IplImage *src, IplImage* dst, int flags ); [#y7284878]

srcを垂直方向に反転

**引数 [#n5d95fcb]
-src:IplImage*型の原画像
-dst:IplImage*型の出力画像
-flags:int型のフラグ
--CV_CVTIMG_FLIP
--CV_CVTIMG_SWAP_RB

**返り値 [#kbcc4483]
-void型なのでなし

*解説 [#cf58e630]
-mode で反転する軸の向きを与える
--mode = 0で垂直反転
--mode = 正の数で水平反転
--mode = 負の数で両方反転
-内部的には
--modeが0を含んだ負の数なら垂直反転、それ以外なら水平反転
--modeが0を含まない負の数ならもう一度水平反転
--という2段階のロジックが組まれている。
-以下Cインタフェースの情報
--modeは省略した場合はデフォルト0が利用される
--dstも省略可能
---dstを省略した場合はsrcを上書きする
--原点は変えずに,中身だけ反転させる関数
--単純に反転だけさせたかったら,IplImage->originの数字のXORを取ればよい
--cvConvertImageも内部ではcvFlipを使ってるだけ 
--cvFlipも、内部的にcv::flipをコールしてる

*サンプルコード [#i9a67941]
#geshi(c++){{
 cvFlip( pRaw, pMirror, 1);
 // これはpInputRaw水平反転させた画像pMirrorが返ってくる.

 cvFlip( pRaw, pUpSideDown, 0);
 // これはpInputRawを垂直反転させた画像pUpSideDownが返ってくる.

 cv::flip(input, output, 0);
 // これは inputを垂直反転させた画像がoutputに格納される
}}

*実体ファイル[#o0a529ab]
-[[:OpenCV 2.4]]
--sources/modules/core/src/copy.cpp (cvFlip, flip)
--sources/modules/core/include/opencv2/core/core.hpp
--sources/modules/highgui/src/utils.cpp (cvConvertImage)
--sources/modules/highgui/include/opencv2/highgui/highgui_c.h
-[[:OpenCV 1.0]]
--cxcore/src/cxcopy.cpp
--cxcore/include/cxcore.h
--otherlibs/highgui/utils.cpp
--otherlibs/highgui/highgui.h

ジャンル[[:OpenCV]][[:OpenCV 1.0]][[:OpenCV 2.4]]準拠

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS