96 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
97 unsigned int destRows = dest.getRows();
98 unsigned int destCols = dest.getCols();
99 const unsigned int index_0 = 0;
100 const unsigned int index_1 = 1;
101 const unsigned int index_2 = 2;
102 const unsigned int index_3 = 3;
103 if (src.type() == CV_8UC4) {
105 for (
unsigned int i = 0; i < destRows; ++i)
106 for (
unsigned int j = 0; j < destCols; ++j) {
107 cv::Vec4b tmp = src.at<cv::Vec4b>(
static_cast<int>(i),
static_cast<int>(j));
108 rgbaVal.
R = tmp[index_2];
109 rgbaVal.
G = tmp[index_1];
110 rgbaVal.
B = tmp[index_0];
111 rgbaVal.
A = tmp[index_3];
113 dest[destRows - i - 1][j] = rgbaVal;
116 dest[i][j] = rgbaVal;
120 else if (src.type() == CV_8UC3) {
121#if defined(VISP_HAVE_SIMDLIB)
122 if (src.isContinuous() && (!flip)) {
123 SimdRgbToBgra(src.data, src.cols, src.rows, src.step[0],
reinterpret_cast<uint8_t *
>(dest.bitmap),
130 for (
unsigned int i = 0; i < destRows; ++i) {
131 for (
unsigned int j = 0; j < destCols; ++j) {
132 cv::Vec3b tmp = src.at<cv::Vec3b>(
static_cast<int>(i),
static_cast<int>(j));
133 rgbaVal.
R = tmp[index_2];
134 rgbaVal.
G = tmp[index_1];
135 rgbaVal.
B = tmp[index_0];
137 dest[destRows - i - 1][j] = rgbaVal;
140 dest[i][j] = rgbaVal;
144#if defined(VISP_HAVE_SIMDLIB)
148 else if (src.type() == CV_8UC1) {
149#if defined(VISP_HAVE_SIMDLIB)
150 if (src.isContinuous() && (!flip)) {
151 SimdGrayToBgra(src.data, src.cols, src.rows, src.step[0],
reinterpret_cast<uint8_t *
>(dest.bitmap),
157 for (
unsigned int i = 0; i < destRows; ++i) {
158 for (
unsigned int j = 0; j < destCols; ++j) {
159 rgbaVal = src.at<
unsigned char>(
static_cast<int>(i),
static_cast<int>(j));
162 dest[destRows - i - 1][j] = rgbaVal;
165 dest[i][j] = rgbaVal;
169#if defined(VISP_HAVE_SIMDLIB)
218 if (src.type() == CV_8UC1) {
219 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
220 unsigned int destRows = dest.getRows();
221 unsigned int destCols = dest.getCols();
222 if (src.isContinuous() && (!flip)) {
223 memcpy(dest.bitmap, src.data,
static_cast<size_t>(src.rows * src.cols));
227 for (
unsigned int i = 0; i < destRows; ++i) {
228 memcpy(dest.bitmap + (i * destCols), src.data + ((destRows - i - 1) * src.step1()),
static_cast<size_t>(destCols *
sizeof(
unsigned char)));
232 for (
unsigned int i = 0; i < destRows; ++i) {
233 memcpy(dest.bitmap + (i * destCols), src.data + (i * src.step1()),
static_cast<size_t>(destCols *
sizeof(
unsigned char)));
238 else if (src.type() == CV_8UC3) {
239 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
240 unsigned int destRows = dest.getRows();
241 unsigned int destCols = dest.getCols();
242 if (src.isContinuous()) {
243 BGRToGrey((
unsigned char *)src.data, (
unsigned char *)dest.bitmap,
static_cast<unsigned int>(src.cols),
static_cast<unsigned int>(src.rows),
248 for (
unsigned int i = 0; i < destRows; ++i) {
249 BGRToGrey((
unsigned char *)src.data + (i * src.step1()),
250 (
unsigned char *)dest.bitmap + ((destRows - i - 1) * destCols),
251 static_cast<unsigned int>(destCols), 1,
false);
255 for (
unsigned int i = 0; i < destRows; ++i) {
256 BGRToGrey((
unsigned char *)src.data + (i * src.step1()), (
unsigned char *)dest.bitmap + (i * destCols),
257 static_cast<unsigned int>(destCols), 1,
false);
262 else if (src.type() == CV_8UC4) {
263 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
264 unsigned int destRows = dest.getRows();
265 unsigned int destCols = dest.getCols();
266 if (src.isContinuous()) {
267 BGRaToGrey((
unsigned char *)src.data, (
unsigned char *)dest.bitmap,
static_cast<unsigned int>(src.cols),
268 static_cast<unsigned int>(src.rows), flip, nThreads);
272 for (
unsigned int i = 0; i < destRows; ++i) {
273 BGRaToGrey((
unsigned char *)src.data + (i * src.step1()),
274 (
unsigned char *)dest.bitmap + ((destRows - i - 1) * destCols),
275 static_cast<unsigned int>(destCols), 1,
false);
279 for (
unsigned int i = 0; i < destRows; ++i) {
280 BGRaToGrey((
unsigned char *)src.data + (i * src.step1()), (
unsigned char *)dest.bitmap + (i * destCols),
281 static_cast<unsigned int>(destCols), 1,
false);
298 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
299 unsigned int destRows = dest.getRows();
300 unsigned int destCols = dest.getCols();
302 if (src.type() == CV_32FC1) {
303 for (
unsigned int i = 0; i < destRows; ++i) {
304 for (
unsigned int j = 0; j < destCols; ++j) {
306 dest[dest.getRows() - i - 1][j] = src.at<
float>(
static_cast<int>(i),
static_cast<int>(j));
309 dest[i][j] = src.at<
float>(
static_cast<int>(i),
static_cast<int>(j));
314 else if (src.type() == CV_16SC1) {
315 for (
unsigned int i = 0; i < destRows; ++i) {
316 for (
unsigned int j = 0; j < destCols; ++j) {
318 dest[dest.getRows() - i - 1][j] = src.at<
short>(
static_cast<int>(i),
static_cast<int>(j));
321 dest[i][j] = src.at<
short>(
static_cast<int>(i),
static_cast<int>(j));
363 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
364 unsigned int destRows = dest.getRows();
365 unsigned int destCols = dest.getCols();
367 if (src.type() == CV_16UC1) {
368 if (src.isContinuous()) {
369 memcpy(dest.bitmap, src.data,
static_cast<size_t>(src.rows * src.cols) *
sizeof(uint16_t));
373 for (
unsigned int i = 0; i < destRows; ++i) {
374 memcpy(dest.bitmap + (i * destCols), src.data + ((destRows - i - 1) * src.step1() *
sizeof(uint16_t)),
static_cast<size_t>(destCols *
sizeof(uint16_t)));
378 for (
unsigned int i = 0; i < destRows; ++i) {
379 memcpy(dest.bitmap + (i * destCols), src.data + (i * src.step1() *
sizeof(uint16_t)),
static_cast<size_t>(destCols *
sizeof(uint16_t)));
399 dest.resize(
static_cast<unsigned int>(src.rows),
static_cast<unsigned int>(src.cols));
400 unsigned int destRows = dest.getRows();
401 unsigned int destCols = dest.getCols();
402 const unsigned int index_0 = 0;
403 const unsigned int index_1 = 1;
404 const unsigned int index_2 = 2;
406 if (src.type() == CV_32FC3) {
408 for (
unsigned int i = 0; i < destRows; ++i)
409 for (
unsigned int j = 0; j < destCols; ++j) {
410 cv::Vec3f tmp = src.at<cv::Vec3f>(
static_cast<int>(i),
static_cast<int>(j));
411 rgbVal.
R = tmp[index_2];
412 rgbVal.
G = tmp[index_1];
413 rgbVal.
B = tmp[index_0];
415 dest[destRows - i - 1][j] = rgbVal;
static void BGRaToGrey(unsigned char *bgra, unsigned char *grey, unsigned int width, unsigned int height, bool flip=false, unsigned int nThreads=0)
static void BGRToGrey(unsigned char *bgr, unsigned char *grey, unsigned int width, unsigned int height, bool flip=false, unsigned int nThreads=0)