画像のリサイズ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
画像のサイズを変更する
#contents
*void cvResize( IplImage* src, IplImage* dst, int interpo...
**引数 [#j5933664]
-src:IplImage*型の入力画像.CvMat*も可
-dst:IplImage*型の出力画像.CvMat*も可
-interpolation:内挿方法をint型で指定する
--CV_INTER_NN(0):最近傍
--CV_INTER_LINEAR(1):線型内挿
--CV_INTER_CUBIC(2):3次畳み込み内挿
--CV_INTER_AREA(3):モアレを軽減させる内挿方法
--CV_INTER_LANCZOS4(4):LANCZOSフィルタによる内挿
--省略した場合は線型内挿
**返り値 [#j2448e98]
-void型なのでなし
*void resize(Mat& src, Mat& dst, Size size, double sx, do...
C++版インタフェース.少なくとも2.2以降ではC++版が実体でC...
**引数 [#j7f69a20]
-src:Mat&型の画像.
-dst:Mat&型の画像.
-sx:double型の拡大率(x方向).省略すると0.
-sy:double型の拡大率(y方向).省略すると0.
-interpolation:内挿方法をint型で指定する
--INTER_NEAREST(0):最近傍内挿(CV_INTER_NN)
--INTER_LINEAR(1):線型内挿(CV_INTER_LINEAR)
--INTER_CUBIC(2):3次畳み込み内挿(CV_INTER_CUBIC)
--INTER_AREA(3):モアレを軽減させる内挿方法(CV_INTER_AREA)
--INTER_LANCZOS4(4):LANCZOSフィルタによる内挿(CV_INTER_LA...
**返り値 [#s8668eeb]
-void型なのでなし
*解説 [#u69f752d]
-cvResizeの場合
--倍率は指定せず,srcとdstのサイズから自動的に拡大/縮小さ...
--srcとdstはタイプが同じ必要がある(32Fや64Fなど)
-resizeの場合
--倍率はsxとsy両方に有効な倍率を指定するか,Size型で出力...
--srcとdstはタイプが同じでなくても自動的に変換される
-CV_INTER_AREA, INTER_AREA は
--縮小時のみ有効(縦横ともに1倍未満の拡大率)
--それ以外の場合は指定しても線型補間になる
-同列のenumにINTER_MAX(7)やWARP_INVERSE_MAP(16)があるが,...
--INTER_MAXは単にenumが取りうる値の最大値
--CV_WARP_INVERSE_MAPやWARP_INVERSE_MAPはwarpAffineやwarp...
-2.4以降はビルド時の指定によって最適化(TEGRA)の効果あり&n...
*CvMat* cvReshape( IplImage* src, CvMat* dst, int new_cha...
**引数 [#zd3cf849]
-src:IplImage*型の入力画像.CvMat*も可
-dst:CvMat*型の出力画像.IplImage*は''代用不可''なので注意
-new_channels:新しいチャンネル数
-new_height:新しい高さ
--省略した場合は0が指定され,元と同じ高さが用いられる
**返り値 [#ld79b3ce]
-CvMat型のポインタ
-dstの値と同じ
*Mat Mat::reshape(int new_channels, int new_height); [#wd...
C++版.cvReshapeは通常の関数だが,reshapeはMatのメンバ関...
**引数 [#k47f00d5]
-new_channels:int型の新しいチャンネル数
-new_height:int型の新しい高さ
--省略した場合は0が指定され,元と同じ高さが用いられる
**返り値 [#ydf6ad75]
-Mat型の画像,行列
*解説 [#s8301c7a]
-cvResizeがコピーなのに対し,cvReshapeはコピーを行わずに...
-ただし,総ピクセル数(バイト数)が変更できない点に注意
-↓3x3の行列を9x1のベクトルに置き換える,と言った変換に用...
&mimetex(\left( \begin{array}{ccc}H_{11} & H_{12} & H_...
-この場合も,メモリ番地上の配列が変わってないことがミソ
-チャンネル数だけは指定しないといけないが,チャンネル数も...
-また,画像のサイズを保持することになるdstは,CvMat型のポ...
-詳しくはサンプルコードを
*サンプルコード [#q4641c7c]
-インタレース解除の例
#geshi(c++,number){{
// インタレース画像
IplImage *interlaceImage = cvLoadImage(INTERLACED_IMAGE_...
// インタレース解除画像
IplImage *resizeImage = cvCreateImage(cvSize(interlac...
// ↓これはポインタでなく,CvMat型の変数を用意しないとだめ
CvMat deinterlaceImage;
// ↓ここで幅を半分に縮小
// ↓水平軸方向にだけ作用しているので
// ↓インタレースについては何も起きてないことに注目
cvResize(interlaceImage, resizeImage, CV_INTER_LINEAR);
// ここで同じチャンネル数(=同じカラー数),半分の高さを指...
// ここで左側に偶数ライン,右側に奇数ラインを表示する
cvReshape(resizeImage, &deinterlaceImage, interlaceImage...
}}
*実行結果 [#x07dd969]
#ref(1.jpg)
-↑インタレース画像(1.jpg)
#ref(2.jpg)
-↑サイズを半分にだけ圧縮した画像.(2.jpg)
-cvResizeの実行結果
#ref(3.jpg)
-2.jpgを高さを半分に,幅を倍にした画像
-cvReshapeの実行結果
-左側が偶数フレーム,右側が奇数フレームなので,左右で撮影...
*実体ファイル [#zff04bcb]
**cvResize [#k8b1dddd]
-OpenCV 1.1 以前
--cv/src/cvimgwarp.cpp
--cv/include/cv.h
-OpenCV 2.0,2.1
--src/cv/cvimgwarp.cpp
--include/opencv/cv.h
-OpenCV 2.2以降
--modules/imgproc/include/opencv2/imgproc/imgproc.hpp (C+...
--modules/imgproc/include/opencv2/imgproc/imgproc_c.h (C版)
--modules/imgproc/src/imgwarp.cpp
**cvReshape [#g574ec4e]
-OpenCV 1.1以前
--cxcore/src/cxarray.cpp
--cxcore/include/cxcore.h
-OpenCV 2.0,2.1
--src/cxcore/cxarray.cpp
--include/opencv/cxcore.h
-OpenCV 2.2以降
--modules/core/include/opencv2/core/core.hpp (C++版)
--modules/core/include/opencv2/core/core_c.h (C版)
--modules/core/src/matrix.cpp (C++版)
--modules/core/src/array.cpp (C版)
*その他 [#h6b43c79]
-何故か入力も出力もdepthがdouble(CV_64FかIPL_DEPTH_64F)の...
-%%補間用の関数が無い模様(OpenCV 2.1で再現)%%
-revision 3986で修正(OpenCV2.2以降に相当)¬e{rev3986:[[...
ジャンル[[:OpenCV]][[:OpenCV 1.0]][[:OpenCV 1.1]][[:OpenC...
終了行:
画像のサイズを変更する
#contents
*void cvResize( IplImage* src, IplImage* dst, int interpo...
**引数 [#j5933664]
-src:IplImage*型の入力画像.CvMat*も可
-dst:IplImage*型の出力画像.CvMat*も可
-interpolation:内挿方法をint型で指定する
--CV_INTER_NN(0):最近傍
--CV_INTER_LINEAR(1):線型内挿
--CV_INTER_CUBIC(2):3次畳み込み内挿
--CV_INTER_AREA(3):モアレを軽減させる内挿方法
--CV_INTER_LANCZOS4(4):LANCZOSフィルタによる内挿
--省略した場合は線型内挿
**返り値 [#j2448e98]
-void型なのでなし
*void resize(Mat& src, Mat& dst, Size size, double sx, do...
C++版インタフェース.少なくとも2.2以降ではC++版が実体でC...
**引数 [#j7f69a20]
-src:Mat&型の画像.
-dst:Mat&型の画像.
-sx:double型の拡大率(x方向).省略すると0.
-sy:double型の拡大率(y方向).省略すると0.
-interpolation:内挿方法をint型で指定する
--INTER_NEAREST(0):最近傍内挿(CV_INTER_NN)
--INTER_LINEAR(1):線型内挿(CV_INTER_LINEAR)
--INTER_CUBIC(2):3次畳み込み内挿(CV_INTER_CUBIC)
--INTER_AREA(3):モアレを軽減させる内挿方法(CV_INTER_AREA)
--INTER_LANCZOS4(4):LANCZOSフィルタによる内挿(CV_INTER_LA...
**返り値 [#s8668eeb]
-void型なのでなし
*解説 [#u69f752d]
-cvResizeの場合
--倍率は指定せず,srcとdstのサイズから自動的に拡大/縮小さ...
--srcとdstはタイプが同じ必要がある(32Fや64Fなど)
-resizeの場合
--倍率はsxとsy両方に有効な倍率を指定するか,Size型で出力...
--srcとdstはタイプが同じでなくても自動的に変換される
-CV_INTER_AREA, INTER_AREA は
--縮小時のみ有効(縦横ともに1倍未満の拡大率)
--それ以外の場合は指定しても線型補間になる
-同列のenumにINTER_MAX(7)やWARP_INVERSE_MAP(16)があるが,...
--INTER_MAXは単にenumが取りうる値の最大値
--CV_WARP_INVERSE_MAPやWARP_INVERSE_MAPはwarpAffineやwarp...
-2.4以降はビルド時の指定によって最適化(TEGRA)の効果あり&n...
*CvMat* cvReshape( IplImage* src, CvMat* dst, int new_cha...
**引数 [#zd3cf849]
-src:IplImage*型の入力画像.CvMat*も可
-dst:CvMat*型の出力画像.IplImage*は''代用不可''なので注意
-new_channels:新しいチャンネル数
-new_height:新しい高さ
--省略した場合は0が指定され,元と同じ高さが用いられる
**返り値 [#ld79b3ce]
-CvMat型のポインタ
-dstの値と同じ
*Mat Mat::reshape(int new_channels, int new_height); [#wd...
C++版.cvReshapeは通常の関数だが,reshapeはMatのメンバ関...
**引数 [#k47f00d5]
-new_channels:int型の新しいチャンネル数
-new_height:int型の新しい高さ
--省略した場合は0が指定され,元と同じ高さが用いられる
**返り値 [#ydf6ad75]
-Mat型の画像,行列
*解説 [#s8301c7a]
-cvResizeがコピーなのに対し,cvReshapeはコピーを行わずに...
-ただし,総ピクセル数(バイト数)が変更できない点に注意
-↓3x3の行列を9x1のベクトルに置き換える,と言った変換に用...
&mimetex(\left( \begin{array}{ccc}H_{11} & H_{12} & H_...
-この場合も,メモリ番地上の配列が変わってないことがミソ
-チャンネル数だけは指定しないといけないが,チャンネル数も...
-また,画像のサイズを保持することになるdstは,CvMat型のポ...
-詳しくはサンプルコードを
*サンプルコード [#q4641c7c]
-インタレース解除の例
#geshi(c++,number){{
// インタレース画像
IplImage *interlaceImage = cvLoadImage(INTERLACED_IMAGE_...
// インタレース解除画像
IplImage *resizeImage = cvCreateImage(cvSize(interlac...
// ↓これはポインタでなく,CvMat型の変数を用意しないとだめ
CvMat deinterlaceImage;
// ↓ここで幅を半分に縮小
// ↓水平軸方向にだけ作用しているので
// ↓インタレースについては何も起きてないことに注目
cvResize(interlaceImage, resizeImage, CV_INTER_LINEAR);
// ここで同じチャンネル数(=同じカラー数),半分の高さを指...
// ここで左側に偶数ライン,右側に奇数ラインを表示する
cvReshape(resizeImage, &deinterlaceImage, interlaceImage...
}}
*実行結果 [#x07dd969]
#ref(1.jpg)
-↑インタレース画像(1.jpg)
#ref(2.jpg)
-↑サイズを半分にだけ圧縮した画像.(2.jpg)
-cvResizeの実行結果
#ref(3.jpg)
-2.jpgを高さを半分に,幅を倍にした画像
-cvReshapeの実行結果
-左側が偶数フレーム,右側が奇数フレームなので,左右で撮影...
*実体ファイル [#zff04bcb]
**cvResize [#k8b1dddd]
-OpenCV 1.1 以前
--cv/src/cvimgwarp.cpp
--cv/include/cv.h
-OpenCV 2.0,2.1
--src/cv/cvimgwarp.cpp
--include/opencv/cv.h
-OpenCV 2.2以降
--modules/imgproc/include/opencv2/imgproc/imgproc.hpp (C+...
--modules/imgproc/include/opencv2/imgproc/imgproc_c.h (C版)
--modules/imgproc/src/imgwarp.cpp
**cvReshape [#g574ec4e]
-OpenCV 1.1以前
--cxcore/src/cxarray.cpp
--cxcore/include/cxcore.h
-OpenCV 2.0,2.1
--src/cxcore/cxarray.cpp
--include/opencv/cxcore.h
-OpenCV 2.2以降
--modules/core/include/opencv2/core/core.hpp (C++版)
--modules/core/include/opencv2/core/core_c.h (C版)
--modules/core/src/matrix.cpp (C++版)
--modules/core/src/array.cpp (C版)
*その他 [#h6b43c79]
-何故か入力も出力もdepthがdouble(CV_64FかIPL_DEPTH_64F)の...
-%%補間用の関数が無い模様(OpenCV 2.1で再現)%%
-revision 3986で修正(OpenCV2.2以降に相当)¬e{rev3986:[[...
ジャンル[[:OpenCV]][[:OpenCV 1.0]][[:OpenCV 1.1]][[:OpenC...
ページ名: