31 if (cudaSetDevice(
device_id_) != cudaSuccess) {
114 const std::string &encoding) {
115 if (cudaSetDevice(
device_id_) != cudaSuccess) {
124 bool success =
false;
127 AINFO <<
"Fill in CPU mode ...";
129 AERROR <<
"Undistortion DO NOT support CPU mode!";
132 if (encoding ==
"rgb8") {
133 memcpy(
rgb_->mutable_cpu_data(), data,
rgb_->count() *
sizeof(data[0]));
136 }
else if (encoding ==
"bgr8") {
137 memcpy(
bgr_->mutable_cpu_data(), data,
bgr_->count() *
sizeof(data[0]));
140 }
else if (encoding ==
"gray" || encoding ==
"y") {
141 memcpy(
gray_->mutable_cpu_data(), data,
gray_->count() *
sizeof(data[0]));
145 AERROR <<
"Unrecognized image encoding: " << encoding;
148 AINFO <<
"Fill in GPU mode ...";
149 if (encoding ==
"rgb8") {
151 cudaMemcpy(
ori_rgb_->mutable_gpu_data(), data,
155 cudaMemcpy(
rgb_->mutable_gpu_data(), data,
156 rgb_->rows() *
rgb_->width_step(), cudaMemcpyDefault);
160 }
else if (encoding ==
"bgr8") {
162 cudaMemcpy(
ori_bgr_->mutable_gpu_data(), data,
166 cudaMemcpy(
bgr_->mutable_gpu_data(), data,
167 bgr_->rows() *
bgr_->width_step(), cudaMemcpyDefault);
171 }
else if (encoding ==
"gray" || encoding ==
"y") {
173 cudaMemcpy(
ori_gray_->mutable_gpu_data(), data,
178 cudaMemcpy(
gray_->mutable_gpu_data(), data,
179 gray_->rows() *
gray_->width_step(), cudaMemcpyDefault);
184 AERROR <<
"Unrecognized image encoding: " << encoding;
188 AINFO <<
"Done! (" << success <<
")";
207 int blob_step = blob->
count(2) *
sizeof(float);
208#if GPU_PLATFORM == NVIDIA
210 nppiConvert_8u32f_C1R(temp_ptr, temp_step, blob_ptr, blob_step, roi);
212 nppiConvert_8u32f_C3R(temp_ptr, temp_step, blob_ptr, blob_step, roi);
214#elif GPU_PLATFORM == AMD
233 AINFO <<
"GetImage ...";
234 if (image ==
nullptr) {
237 bool success =
false;
252 AERROR <<
"Unsupported Color: "
260 AINFO <<
"\tcropping ...";
261 *image = (*image)(options.
crop_roi);
270 float coeffs[] = {0.114f, 0.587f, 0.299f};
274 float coeffs[] = {0.299f, 0.587f, 0.114f};
278 AWARN <<
"No image data filled yet, return uninitialized blob!";
289 const int order[] = {2, 1, 0};
296 AWARN <<
"No image data filled yet, return uninitialized blob!";
306 const int order[] = {2, 1, 0};
313 AWARN <<
"No image data filled yet, return uninitialized blob!";
A wrapper around SyncedMemory holders serving as the basic computational unit for images,...
const Dtype * gpu_data() const
const std::vector< int > & shape() const
Dtype * mutable_gpu_data()
void Reshape(const int num, const int channels, const int height, const int width)
Deprecated; use Reshape(const std::vector<int>& shape).
A wrapper around Blob holders serving as the basic computational unit for images.
bool Init(const InitOptions &options=InitOptions())
std::shared_ptr< base::Image8U > ori_gray_
std::shared_ptr< base::Image8U > gray_
bool GetImageBlob(const ImageOptions &options, base::Blob< uint8_t > *blob)
std::shared_ptr< base::Image8U > ori_bgr_
std::shared_ptr< base::Image8U > bgr_
std::shared_ptr< base::Image8U > ori_rgb_
bool GetImage(const ImageOptions &options, base::Image8U *image)
base::Blob< uint8_t > temp_uint8_
std::shared_ptr< UndistortionHandler > handler_
std::shared_ptr< base::Image8U > rgb_
bool FillImageData(int rows, int cols, const uint8_t *data, const std::string &encoding)
const std::map< Color, int > kChannelsMap
bool imageToBlob(const base::Image8U &image, base::Blob< uint8_t > *blob)
bool imageToGray(const base::Image8UPtr &src, const base::Image8UPtr &dst, const int src_width, const int src_height, const float coeffs[3])
bool swapImageChannels(const base::Image8UPtr &src, const base::Image8UPtr &dst, const int src_width, const int src_height, const int order[3])
bool dupImageChannels(const base::Image8UPtr &src, const base::Image8UPtr &dst, const int src_width, const int src_height)