OpenCVのMat_()に怪奇文

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
SBB

OpenCVのMat_()に怪奇文

#1

投稿記事 by SBB » 6年前

暑いにも大変ですが、下記のような怪奇文に遭遇してしまいました

コード:

Mat m =(Mat_<float>(10,20)<<j,i); // i,j はint型
これはどんな操作でしょうか。。。「<<」はシフトの意味でしょうか、何をシフトするの?

Opencv知っている方少ないと思いますが、
あえてここに質問をさせていただきます。

どうか宜しくお願いします

アバター
usao
記事: 1887
登録日時: 11年前

Re: OpenCVのMat_()に怪奇文

#2

投稿記事 by usao » 6年前

間違ってたらすみません.
<<は要素値の設定ではなかったかと.
その文の直後におけるmの要素値はどうなってますか?
(先頭の2つの要素が jの値, iの値 みたいなことになっていませんか?)

SBB

Re: OpenCVのMat_()に怪奇文

#3

投稿記事 by SBB » 6年前

早速お返答有難うございます。
アルゴリズムの解読をしているだけで、OpenCVの開発環境を持っていません。
なので、元のコードを実行できません。

「<<」 は シフトでなければ、 ( V<<j, j )のような形で V に (j,i) を設定できるのでしょうか。
C言語にはこんな機能はないではと思いますが。

また宜しくお願いします

アバター
asd
記事: 319
登録日時: 13年前

Re: OpenCVのMat_()に怪奇文

#4

投稿記事 by asd » 6年前

SBB さんが書きました: 「<<」 は シフトでなければ、 ( V<<j, j )のような形で V に (j,i) を設定できるのでしょうか。
C言語にはこんな機能はないではと思いますが。
C++ではストリームを介して文字出力する際にも<<演算子を使いますね。
とはいえ、coutをシフト演算しているわけではないです。
挿入(流し込む)イメージでとらえてもらえると。

コード:

cout << "Hello,World!" << endl;
ちなみにOpenCVのMatクラスにも<<演算子とカンマ区切りの式にて行列の初期値設定ができると明記されています。
私もすぐに試せる環境がないのですが、usaoさんのおっしゃっているように先頭要素がj,iの順に設定された行列が
定義されるのではないかと思います。

(参考)
http://opencv.jp/opencv-2svn/cpp/basic_ ... s.html#mat
カンマ区切りの初期化子:

// 3x3 の倍精度単位行列を作成します.
Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);

ここでは,まず(後で述べる) Mat_ クラスのコンストラクタに適切なパラメータを与えて呼び出し,さらに << 演算子に続いて,定数,変数,式などから成るカンマ区切りの値を与えています.また,コンパイルエラーを避けるために,カッコが必要なことにも注意してください.
Advanced Supporting Developer
無理やりこじつけ(ぉ

SBB

Re: OpenCVのMat_()に怪奇文

#5

投稿記事 by SBB » 6年前

asd様
丁寧なご解説本当にありがとうございました。
C言語って奥深いですね。
さらに勉強しなければ。。。と実感しました。

かずま

Re: OpenCVのMat_()に怪奇文

#6

投稿記事 by かずま » 6年前

怪奇に見えますが、実現可能です。

コード:

#include <iostream>
#include <string>
using namespace std;
 
struct Vec {
    string v;
    Vec(const string& s = "") : v(s) { }
    Vec& operator<<(const string& s) { v = s; return *this; }
    Vec& operator,(const string& s) { v += "," + s; return *this; }
};

int main()
{
    Vec vec = (Vec() << "abc", "def", "ghi");
    cout << vec.v << endl;
}
実行結果

コード:

abc,def,ghi

返信

“C言語何でも質問掲示板” へ戻る