特にスーリヤの2つ目の質問に答えるために:
THBを、OpenCVの上のドキュメントが最善ではありません。 ここに最新のタイプへのリンクがあります:cv :: Mat http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat新しいタイプは、CスタイルよりもモダンなC++です。ここ
類似のトピックを有する2件の以上のOpenCVのフォーラム回答:http://answers.opencv.org/question/65224/conversion-between-cvmat-and-cvmat/ 及び(juanchopanzaに述べたように)特に変換問題のhttp://www.answers.opencv.org/question/13437/difference-between-cvmat-cvmat-cvmat-and-mat/
:
cv::Mat mat = cv::Mat(10, 10, CV_32FC1); //CV_32FC1 equals float
//(reads 32bit floating-point 1 channel)
CvMat cvMat = mat;
又は有する
using namespace cv; //this should be in the beginning where you include
Mat mat = Mat(10, 10, CV_32FC1);
CvMat cvMat = mat;
注:通常はおそらくCvMat*
で作業しますが、新しいタイプに完全に切り替えることについて例(私の第2のリンクから採取):
CvMat* A = cvCreateMat(10, 10, CV_32F); //guess this works fine with no channels too
フロートするINTの変更:れるCvMatはヒープ上に保持されているよう
CvMat* A = cvCreateMat(10, 10, CV_16SC1);
//Feed A with data
CvMat* B = cvCreateMat(10, 10, CV_32FC1);
for(int i=0; i<10; ++i)
for(int i=0; i<10; ++i)
CV_MAT_ELEM(*A, float, i, j) = (float) cvmGet(B, i, j);
//Don't forget this unless you want to produce a memory leak.
cvReleaseMat(&A);
cvReleaseMat(&B);
(ポインタなし)最初の2つの例は、そのような細かいです。 cvCreateMat(...)
は、自分で解放しなければならないメモリを後で割り当てます。 cv::Mat
を使用する別の理由
@ juanchopanzaありがとう、上記の操作に関連するリンクを提供できますか? CvMatでデータ型をどのように変換できますか?私は私のCvMatのデータを整数にしました、今私は浮動小数点に変更する必要があります、どうすればいいですか? – surya