2020/10/15 03:39 編集
へ
投稿2020/10/15 02:38
編集2020/10/15 03:25c++ 初心者です。
動的オブジェクトで生成したメモリ領域に BGRの順で BGR画像を入れたいのですが、
質問1.forEach 文を使った場合、下のコードのどこを変更すればいいでしょうか?
質問2.メモリ領域に画像を格納する場合、配列のような形でなく、メモリアドレスの0, 1, 2, 3, 4,〜 ,nと整数の順番ごとに入れてく方法でいいんでしょうか?
下のforEach は BGRからRGBに変換したあと、RGBの順でRGB画像を入れています。
c++
1 2void preprocessing(Mat &img) 3{ 4 cvtColor(img, img, COLOR_BGR2RGB); 5 resize(img, img, Size(VALID_WIDTH, VALID_HEIGHT)); 6} 7 8 9 10int8_t normalize_and_quantize(int pixel, int i, int j, int k, float scale) 11{ 12 int8_t q_pixel; 13 14 if ((i < VALID_HEIGHT) && (j < VALID_WIDTH)) 15 q_pixel = pixel / 255.0 * scale; 16 else 17 q_pixel = 0; 18 return q_pixel; 19} 20 21void setInputImage(DPUTask *task, const char *inNode, const cv::Mat &image) 22{ 23 DPUTensor *in = dpuGetInputTensor(task, inNode); 24 float scale = dpuGetTensorScale(in); 25 int w = dpuGetTensorWidth(in); 26 int h = dpuGetTensorHeight(in); 27 int c = 3; 28 int8_t *data = dpuGetTensorAddress(in); 29 image.forEach<Vec3b>([&](Vec3b &p, const int pos[2]) -> void { 30 int start = pos[0] * w * c + pos[1] * c; 31 for (int k = 0; k < 3; k++) 32 data[start + k] = normalize_and_quantize(p[0], pos[0], pos[1], k, scale); 33 }); 34}
回答1件
あなたの回答
tips
プレビュー