const voidポインタからのメモリオフセットに値を設定するにはどうすればよいですか?

ヤニック・ロション

関数からポインタが返されました

rs2::video_frame frame = frames.get_color_frame();
const void* data = frame.get_data();

このポインタは、サイズがRGB値(つまり3秒)の配列であること知っていますcharframe.get_data_size()

それを前提として、特定のピクセルの色を変更するにはどうすればよいですか?

int bpp = frame.get_bytes_per_pixel();
int width = frame.get_width();
int height = frame.get_height();

int offset = (y * width * bpp) + (x * bpp);
int r = offset;
int g = offset + 1;
int b = offset + 2;

// ?data[r] = newRed;
// ?data[g] = newGreen;
// ?data[b] = newBlue;
ルネ・オシュマン

オブジェクト指向のアプローチがあれば、もっと簡単になります。

struct Pixel {
    short red;
    short green;
    short blue;
};

フレームをstd::vector<Pixel> pixels;で動作させますこれは参照によって返されます。std::vector<Pixel>& get_data();

pixels[y * width + x].red = newRed;
pixels[y * width + x].green = newGreen;
pixels[y * width + x].blue = newBlue;

本当に作業する必要がある場合はvoid*、これを試してください

char* data = static_cast<char*>(const_cast<void*>(dataframe.get_data()));
// Since you also const cast it becomes more and more dangerous. You really need know what you are doing.

size_t bpp = frame.get_bytes_per_pixel();
size_t width = frame.get_width();
size_t height = frame.get_height();

size_t offset = (y * width * bpp) + (x * bpp);
size_t r = offset;
size_t g = offset + 1;
size_t b = offset + 2;

*(data + r) = newRed;
*(data + g) = newGreen;
*(data + b) = newBlue;

一括更新には、を使用できますmemset

詳細については、https://godbolt.org/z/xvc1xsを参照してください。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

constのデフォルト値を設定するにはどうすればよいですか?

分類Dev

C ++の設定ファイルからカスタムの「const」変数をロードするにはどうすればよいですか?

分類Dev

const伝播ポインタ型ラッパーを作成するにはどうすればよいですか?

分類Dev

1つのメモリブロックにソートされた複数の変換ユニットからの複数のconstオブジェクトを配置するにはどうすればよいですか?

分類Dev

QDialogのconstメソッドからQMessageBoxを表示するにはどうすればよいですか?

分類Dev

const値のみを保持する変数ポインターを保持するにはどうすればよいですか?

分類Dev

変数の値を保持する「const」を定義するにはどうすればよいですか?

分類Dev

Dの非const /可変データへのconstポインタを宣言するにはどうすればよいですか?

分類Dev

constをフィールド値と等しくなるように設定するにはどうすればよいですか?

分類Dev

constメンバー変数で配列サイズを設定するにはどうすればよいですか?

分類Dev

const charポインタを一意のポインタに変更するにはどうすればよいですか?

分類Dev

const文字列に含まれる列値(文字列)でDataFrameをフィルタリングするにはどうすればよいですか?

分類Dev

メソッドからオブジェクトへのconst参照を返すにはどうすればよいですか?

分類Dev

関数ポインタをconstとして返すにはどうすればよいですか?

分類Dev

テンプレートパラメータに基づいてメソッドconstを作成するにはどうすればよいですか?

分類Dev

Tが参照になる可能性があるアグメント `const T&`および `T &&`のジェネリック関数をオーバーライドするにはどうすればよいですか?

分類Dev

無効なオペランドをバイナリ式の問題( 'const char *および' double ')に修正するにはどうすればよいですか?

分類Dev

ライブラリの実装がTSプロジェクトと統合されていない場合、d.tsファイルのエクスポートされたconstタイプを使用するにはどうすればよいですか?

分類Dev

C ++の関数内のポインターにconst参照を割り当てるにはどうすればよいですか?

分類Dev

1990年にconst定義に2つのintを追加するにはどうすればよいですか?

分類Dev

メンバー関数にconstオーバーロードがあるかどうかを確認するにはどうすればよいですか?

分類Dev

reactを使用して、constに保持されている選択ドロップダウンの値を取得するにはどうすればよいですか?

分類Dev

const intメソッドの戻り値に等しい長さの配列を初期化するにはどうすればよいですか?

分類Dev

クラスAの非constパブリックメンバーmへのアクセスを、Aを非constメンバーとして含む別のクラスBにconstになるように制限するにはどうすればよいですか?

分類Dev

非constパラメーターをカスタムシンクバックエンドに提供するにはどうすればよいですか?

分類Dev

C#で静的クラスを定義せずにconst値にアクセスするにはどうすればよいですか?

分類Dev

列挙型constをインターフェイスタイプとしてormliteに永続化するにはどうすればよいですか?

分類Dev

デストラクタからconstメンバー関数を呼び出すにはどうすればよいですか?

分類Dev

上位コンポーネントからconst変数でジェネリックReactコンポーネントを宣言するにはどうすればよいですか?

Related 関連記事

  1. 1

    constのデフォルト値を設定するにはどうすればよいですか?

  2. 2

    C ++の設定ファイルからカスタムの「const」変数をロードするにはどうすればよいですか?

  3. 3

    const伝播ポインタ型ラッパーを作成するにはどうすればよいですか?

  4. 4

    1つのメモリブロックにソートされた複数の変換ユニットからの複数のconstオブジェクトを配置するにはどうすればよいですか?

  5. 5

    QDialogのconstメソッドからQMessageBoxを表示するにはどうすればよいですか?

  6. 6

    const値のみを保持する変数ポインターを保持するにはどうすればよいですか?

  7. 7

    変数の値を保持する「const」を定義するにはどうすればよいですか?

  8. 8

    Dの非const /可変データへのconstポインタを宣言するにはどうすればよいですか?

  9. 9

    constをフィールド値と等しくなるように設定するにはどうすればよいですか?

  10. 10

    constメンバー変数で配列サイズを設定するにはどうすればよいですか?

  11. 11

    const charポインタを一意のポインタに変更するにはどうすればよいですか?

  12. 12

    const文字列に含まれる列値(文字列)でDataFrameをフィルタリングするにはどうすればよいですか?

  13. 13

    メソッドからオブジェクトへのconst参照を返すにはどうすればよいですか?

  14. 14

    関数ポインタをconstとして返すにはどうすればよいですか?

  15. 15

    テンプレートパラメータに基づいてメソッドconstを作成するにはどうすればよいですか?

  16. 16

    Tが参照になる可能性があるアグメント `const T&`および `T &&`のジェネリック関数をオーバーライドするにはどうすればよいですか?

  17. 17

    無効なオペランドをバイナリ式の問題( 'const char *および' double ')に修正するにはどうすればよいですか?

  18. 18

    ライブラリの実装がTSプロジェクトと統合されていない場合、d.tsファイルのエクスポートされたconstタイプを使用するにはどうすればよいですか?

  19. 19

    C ++の関数内のポインターにconst参照を割り当てるにはどうすればよいですか?

  20. 20

    1990年にconst定義に2つのintを追加するにはどうすればよいですか?

  21. 21

    メンバー関数にconstオーバーロードがあるかどうかを確認するにはどうすればよいですか?

  22. 22

    reactを使用して、constに保持されている選択ドロップダウンの値を取得するにはどうすればよいですか?

  23. 23

    const intメソッドの戻り値に等しい長さの配列を初期化するにはどうすればよいですか?

  24. 24

    クラスAの非constパブリックメンバーmへのアクセスを、Aを非constメンバーとして含む別のクラスBにconstになるように制限するにはどうすればよいですか?

  25. 25

    非constパラメーターをカスタムシンクバックエンドに提供するにはどうすればよいですか?

  26. 26

    C#で静的クラスを定義せずにconst値にアクセスするにはどうすればよいですか?

  27. 27

    列挙型constをインターフェイスタイプとしてormliteに永続化するにはどうすればよいですか?

  28. 28

    デストラクタからconstメンバー関数を呼び出すにはどうすればよいですか?

  29. 29

    上位コンポーネントからconst変数でジェネリックReactコンポーネントを宣言するにはどうすればよいですか?

ホットタグ

アーカイブ