cv :: Matからarma :: matに変換します

Name_Not_Found

こんにちはみんな私は画像の固有値と固有ベクトルを計算するプログラムをやっています。このために、私はOpenCVおよびArmadilloライブラリを使用しています。OpenCVでは画像をプログラムにアップロードし、Armadilloでは固有値と固有ベクトルを計算します。

固有値と固有ベクトルを計算できるようにするには、cv :: Matからarma :: matに変換する必要があります。これについては、前の回答に基づいて次のことを行います。

arma::mat arma_mat(reinterpret_cast<double*>(image.data), image.rows, image.cols);

完全なコードはここにあります:

#include<armadillo>
#include<opencv2/opencv.hpp>
#include<iostream>

int main()
{
    cv::Mat image = cv::imread("Imgs/face.jpg", CV_LOAD_IMAGE_GRAYSCALE);
    if(!image.data){
        std::cout << "No se pudo cargar la imágen\n";
        return -1;
    }

    arma::mat arma_mat(reinterpret_cast<double*>(image.data), image.rows, image.cols);

    return 0;
}

コードはコンパイルに問題はありませんが、実行されると、cv :: Matからarma :: matに変換される行に到達すると、実行が停止し、コンソールが表示されます(終了値:-1)誰もがこれを知っていますか起こっている?

私達は与える

自分が何をしているかを本当に理解していない限り、再解釈キャストを使用しないでください。それが何をするかについての良い説明については、この質問の受け入れられた答えを見てください


私はopencvの経験がなく、アルマジロだけを使っています。見るとOpenCVのドキュメント私は見ることができimage.dataていますuchar値を単にreinterpret_castしてdoubleにすることはできません。これは未定義の動作であり、この場合は間違いなく間違っています。

アルマジロ行列クラス(arma::Mat)はテンプレートです。を作成しMat<uchar>Mat<uchar>(ptr_aux_mem, n_rows, n_cols, copy_aux_mem = true, strict = false)コンストラクターを使用すると、要素のコピーを回避できますもちろん、他のアルマジロタイプを使用することもできますが、その場合、他のタイプに変換するために要素をコピーする必要があります(toなどarma::mat、これは単なるエイリアスですarma::Mat<double>)。その場合、別のコンストラクターを使用します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

'cv :: Mat *'から 'const cv :: Mat'に変換できません

分類Dev

cv :: Matとarma :: matの間の変換

分類Dev

Magick :: Imageをcv :: Matに変換します

分類Dev

arm_compute :: Imageをcv :: Matに変換します

分類Dev

OGRE :: Imageをcv :: Matに変換します

分類Dev

uint64_tをcv :: matに変換します

分類Dev

CVImageBufferRef YUV420をcv :: Mat RGBに変換し、CALayerに表示しますか?

分類Dev

cv :: MatをMFCCBitmapに変換する方法

分類Dev

タイプ「Emgu.CV.Mat」を「Emgu.CV.Image <Emgu.CV.Structure.Bgr、byte>」に変換します

分類Dev

Libcurl C ++ std :: stringをcv :: Matオブジェクトに変換します

分類Dev

cv :: MatをCV_8UC1に正しく変換する方法は?

分類Dev

cv :: MATはどのようにNHCW形式に変換されますか?

分類Dev

cv :: Matをcv :: Vec3fに変換する方法は?

分類Dev

cv :: Matからx、y、zコードを取得します

分類Dev

(Rcpp、armadillo)arma :: vecをarma :: matに変換します

分類Dev

cv :: MatからQImageへの変換が正しく機能しない

分類Dev

TriangulatePoints用のC ++を使用してOpenCVでキーポイントをcv :: Matに変換します

分類Dev

OpenCV3.0でCvMat *をcv :: Matに変換する方法

分類Dev

cv :: Matをpcl :: pointcloudに変換する方法

分類Dev

cv :: MatをvtkImageDataに変換する方法は?

分類Dev

ATL :: CImageをcv :: Matに変換する方法は?

分類Dev

画像のURIをcv :: Matに変換する方法

分類Dev

画像をCV_64FからCV_8Uに変換します

分類Dev

UIImageからcv :: Matを作成中にエラーが発生しました

分類Dev

cv :: Matの下部を別のcv :: Matにコピーする

分類Dev

動的に割り当てられたデータでcv :: Matを初期化します

分類Dev

あるcv :: Matを別のcv :: Matにプッシュすると、それがコピーされますか?

分類Dev

cv :: MatをTensorFlowTensorに変換するときに「.exeがブレークポイントをトリガーしました」

分類Dev

How to find the same cv::Mat in vector<cv::Mat>

Related 関連記事

  1. 1

    'cv :: Mat *'から 'const cv :: Mat'に変換できません

  2. 2

    cv :: Matとarma :: matの間の変換

  3. 3

    Magick :: Imageをcv :: Matに変換します

  4. 4

    arm_compute :: Imageをcv :: Matに変換します

  5. 5

    OGRE :: Imageをcv :: Matに変換します

  6. 6

    uint64_tをcv :: matに変換します

  7. 7

    CVImageBufferRef YUV420をcv :: Mat RGBに変換し、CALayerに表示しますか?

  8. 8

    cv :: MatをMFCCBitmapに変換する方法

  9. 9

    タイプ「Emgu.CV.Mat」を「Emgu.CV.Image <Emgu.CV.Structure.Bgr、byte>」に変換します

  10. 10

    Libcurl C ++ std :: stringをcv :: Matオブジェクトに変換します

  11. 11

    cv :: MatをCV_8UC1に正しく変換する方法は?

  12. 12

    cv :: MATはどのようにNHCW形式に変換されますか?

  13. 13

    cv :: Matをcv :: Vec3fに変換する方法は?

  14. 14

    cv :: Matからx、y、zコードを取得します

  15. 15

    (Rcpp、armadillo)arma :: vecをarma :: matに変換します

  16. 16

    cv :: MatからQImageへの変換が正しく機能しない

  17. 17

    TriangulatePoints用のC ++を使用してOpenCVでキーポイントをcv :: Matに変換します

  18. 18

    OpenCV3.0でCvMat *をcv :: Matに変換する方法

  19. 19

    cv :: Matをpcl :: pointcloudに変換する方法

  20. 20

    cv :: MatをvtkImageDataに変換する方法は?

  21. 21

    ATL :: CImageをcv :: Matに変換する方法は?

  22. 22

    画像のURIをcv :: Matに変換する方法

  23. 23

    画像をCV_64FからCV_8Uに変換します

  24. 24

    UIImageからcv :: Matを作成中にエラーが発生しました

  25. 25

    cv :: Matの下部を別のcv :: Matにコピーする

  26. 26

    動的に割り当てられたデータでcv :: Matを初期化します

  27. 27

    あるcv :: Matを別のcv :: Matにプッシュすると、それがコピーされますか?

  28. 28

    cv :: MatをTensorFlowTensorに変換するときに「.exeがブレークポイントをトリガーしました」

  29. 29

    How to find the same cv::Mat in vector<cv::Mat>

ホットタグ

アーカイブ