[32/64bit] フリースケーリングパラメータに基づいた,新しいカメラ固有の行列を返します.
calib3d_getOptimalNewCameraMatrix_array p1,p2,p3,p4,p5,p6,p7,p8,p9
p1 = var : double* cameraMatrix p2 = var : [In] double[] distCoeffs p3 = int : int distCoeffsSize p4 = ARGS_SIZE : Size imageSize p5 = double : double alpha p6 = ARGS_SIZE : Size newImgSize p7 = var : out Rect validPixROI p8 = int : int centerPrincipalPoint p9 = var : out IntPtr returnValue
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この関数は,フリースケーリングパラメータに基づいて,最適な新しいカメラ固有の行列を計算し,それを返します.このパラメータを変化させることで,意味のあるピクセルだけを取り出したり alpha=0 ,コーナーに貴重な情報がある場合に元画像のピクセルをすべて残したり alpha=1 ,その中間の値を得たりすることができます.alpha>0の場合,歪みのない結果には,キャプチャされた歪んだ画像の外側にある「仮想」ピクセルに対応するいくつかの黒いピクセルが含まれる可能性があります.元のカメラの内部行列,歪み係数,計算された新しいカメラの内部行列,そして newImageSize は,リマップ用のマップを生成するために initUndistortRectifyMap に渡されなければいけません. 元関数名(C#): calib3d_getOptimalNewCameraMatrix_array 元DLLエクスポート名: calib3d_getOptimalNewCameraMatrix_array 参照元CSファイル: Internal\PInvoke\NativeMethods\calib3d\NativeMethods_calib3d.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) calib3d_getOptimalNewCameraMatrix_array(
double *cameraMatrix,
double *distCoeffs, int distCoeffsSize,
MyCvSize imageSize, double alpha, MyCvSize newImgSize,
MyCvRect* validPixROI, int centerPrincipalPoint,
cv::Mat **returnValue)
{
BEGIN_WRAP
const cv::Mat cameraMatrixM(3, 3, CV_64FC1, cameraMatrix);
const auto distCoeffsM = (distCoeffs == nullptr) ? cv::Mat() : cv::Mat(distCoeffsSize, 1, CV_64FC1, distCoeffs);
cv::Rect _validPixROI;
const auto mat = cv::getOptimalNewCameraMatrix(cameraMatrixM, distCoeffsM, cpp(imageSize),
alpha, cpp(newImgSize), &_validPixROI, centerPrincipalPoint != 0);
*validPixROI = c(_validPixROI);
*returnValue = new cv::Mat(mat);
END_WRAP
}
| プラグイン / モジュール | OpenCvSharpExtern.dll |
| バージョン | 1.00 |
| 作成日 | 2021/11/30 |
| 著作者 | inovia |
| URL | https://hsp.moe/ |
| 備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
| タイプ | OpenCVSharpラッパーDLL |
| グループ | NativeMethods_calib3d |
| 対応環境 |
|
| hs ファイル | hsphelp\OpenCvSharpExtern.hs |