
No.5
- 回答日時:
type ? The type of the matrix elements in the form CV_, where S=signed, U=unsigned, F=float. For example, CV_8UC1 means the elements are 8-bit unsigned and the there is 1 channel, and CV_32SC2 means the elements are 32-bit signed and there are 2 channels.
数字はビット数なのでそうですね
32FC1 = 32ビット浮動少数1チャンネル
No.3
- 回答日時:
どうも内部的には単なるポインタをアクセスするだけのような作りっぽいので、
std::vectorは向いていない気がしてきました。
(&data[0]がずっと固定とは限らないから)
ちなみに
int main(void){
int rows = 3;
int cols = 4;
int i;
double num;
CvMat Ma;
double* data = new double[rows*cols];
for( i = 0; i < rows*cols; ++i )
{
data[i] = (double)i;
}
cvInitMatHeader(&Ma, rows, cols, CV_32FC1, &data[0], CV_AUTOSTEP);
num=cvmGet(&Ma,0,3);
printf("%f\n",num);
delete[] data;
return 0;
}
だとどうなりますか?
この回答への補足
度々ありがとうございます。
上記のプログラムを実行してみても同じ1.875という結果になってしまいました。
http://d.hatena.ne.jp/aidiary/20100227/1267277731のページの中段(掲載されているうちの4つ目)に
書いてあるプログラムの末尾を見ると同じようなことをしているように見えるのですが、
どこがいけないのかよくわかりませんでした。
もう少し調べて検討してみます。わざわざ時間を割いてもらって申し訳ありませんでした。
本当にありがとうございます。
No.2
- 回答日時:
とりあえず、
>heap = (int *)malloc(sizeof(int) * 10);
で
>for (i = 0;i < 12;i++) {
はサイズが違うのでまずいのでは?
それと
>CV_32FC1
はint型用のtypeではないのでは?CV_32SC1かな?
C言語といわれていますが、CvMat というクラスを使われているのでC++ですので、
STLのvectorあたりを使ってみるとか。
#include <vector>
int rows = 3;
int cols = 4;
std::vector<int> data;
for (int i = 0; i < rows * cols; ++i) {
data.push_back(i);
}
cvInitMatHeader(&Ma, rows, cols, CV_32SC1, &data[0], CV_AUTOSTEP);
この回答への補足
お返事ありがとうございます。
サイズとタイプについては試行錯誤してたので質問に載せる際に変な感じになっちゃっていましたが、
自分で試した時はサイズ・タイプともご指摘されたように設定し実行しています。すみません。
まだプログラミングを始めたばかりなのでSTLというものが利用出来ることを知りませんでした!
ありがとうございます。そこで試しに以下のプログラムを動かしてみました。
int main(void){
int rows = 3;
int cols = 4;
int i;
double num;
CvMat Ma;
std::vector<double> data;
for( i = 0; i < rows*cols; ++i )
{
data.push_back( i );
}
cvInitMatHeader(&Ma, rows, cols, CV_32FC1, &data[0], CV_AUTOSTEP);
num=cvmGet(&Ma,0,3);
printf("%f\n",num);
return 0;
}
ちゃんと行列Maに値が格納されているか確認しようとcvmGetを使用してみました。
上のプログラムですと本来4.0という値が出力されると思うのですが、結果は1.875となってしまいます。
別の要素で試してみても思うような値が返ってきません。
data[i]に関しては、ちゃんと0~11の値が入っていることは確認したので、cvmGetを使用する際に
何か注意すべき点があるのでしょうか?もしくはcvInitMatHeaderがちゃんと機能していないのでしょうか?
またまた質問でお返しする形になって申し訳ないです。
No.1
- 回答日時:
コンパイラによっては配列作れますよ
お使いのコンパイラは何でしょう?
一般的にはmallocで領域確保して配列のようにして使うですかね
int* array = (int*)malloc(num * sizeof(int));
array[num - 1] = 100;
.
.
.
.
free(array);
この回答への補足
早速の回答ありがとうございます。
現在Visual C++ 2008を使用しております。
php504さんの提案されている動的確保も検討してみたんですが、
今私がやろうとしている事が1次元配列をOpenCVの関数を用いて行列とする。ということでして、
これを実行するとなるとうまくいかなくて質問した次第です。説明不足ですみませんでした。
例として、以下のプログラムを記載します。
int *heap;
CvMat Ma;
heap = (int *)malloc(sizeof(int) * 10);
if (heap == NULL) exit(0);
for (i = 0;i < 12;i++) {
heap[i] = i;
}
cvInitMatHeader( &Ma, 3, 4,CV_32FC1, heap ,CV_AUTOSTEP);
これはあくまで例なのですが、この場合Maの要素を出力してみるとすべての要素が0となってしまいます。
heap[i]に当たる部分を以下のようにした場合はちゃんと行列に要素の値が格納されていたのでどうしたものかと困っていました。
int a[] = { 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12 };
これには何か解決法があるのでしょうか?質問ばかりですみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
C言語において、 配列要素をひ...
-
define で 配列
-
C言語の課題が出たのですが自力...
-
c言語
-
配列のNULL初期化について
-
Cのエラー
-
int i, int i[1];
-
C言語の2次元配列 容量が大き...
-
0 からa-1 までの整数の乱数をn...
-
ポインタを使って構造体の配列...
-
プログラミングに関する問題が...
-
配列の不正アクセスについて
-
C言語 構造体でつまずいています
-
fclose()でセグメンテーション違反
-
c言語 配列
-
C言語 ファイルの指定された行...
-
.NET C++で、構造体の配列をnew...
-
100の階乗のプログラムって
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
C言語 ファイルの指定された行...
-
C言語において、 配列要素をひ...
-
C言語の課題が出たのですが自力...
-
C#で配列が空かを判定するには?
-
構造体のextern方法
-
C言語の配列のコピーについて
-
c言語 構造体
-
C言語 数値の連続入力について
-
MFC - ダイアログボックスのPic...
-
C++DLLからC#へのコールバック...
-
配列のアドレス部
-
要素数・要素の値が未定の配列...
-
C言語についてです 5人のテスト...
-
.NET C++で、構造体の配列をnew...
-
2番目の最大値を求める
おすすめ情報