Konwersja obrazu opencv na bitmapę gdi nie działa zależnie od rozmiaru obrazu

Mam ten kod, który konwertuje obraz opencv na bitmapę:

  void processimage(MAT imageData)
  {
      Gdiplus::Bitmap bitmap(imageData.cols,imageData.rows,stride, PixelFormat24bppRGB,imageData.data);

   // do some work with bitmap
  }

Działa dobrze, gdy rozmiar obrazu wynosi 2748 X 3664. Ale próbuję przetworzyć obraz z rozmiarem 1374 X 1832, nie działa.

Błąd jest nieprawidłowym parametrem (2).

Sprawdziłem i mogę potwierdzić, że:

w 2748 * 3664:

cols = 2748wiersze = 3664krok = 8244obraz jest kontynuowany.

w 1374 X 1832

cols = 1374wiersze = 1832krok = 4122obraz jest kontynuowany.

Wszystko wydaje mi się poprawne, ale generuje błąd.

Jaki jest problem i jak mogę to naprawić?

Edytować

Na podstawie odpowiedzi wyjaśniającej, dlaczego nie mogę utworzyć mapy bitowej. W końcu zaimplementowałem to w ten sposób:

   Mat newImage;
   cvtColor(imageData, newImage, CV_BGR2BGRA);
   Gdiplus::Bitmap bitmap(newImage.cols,newImage.rows,newImage.step1(), PixelFormat32bppRGB,newImage.data);

Tak skutecznie konwertuję obraz wejściowy na 4 bajty na piksel, a następnie używam go do konwersji na bitmapę.

Wszystkie kredyty doRoger Rowland za jego odpowiedź.

questionAnswers(2)

yourAnswerToTheQuestion