изменение типа кадра без потери данных

Я использую Opencv, и у меня есть два кадра: cv :: frame1 и cv :: frame2, когда я проверяю их тип, который я получаю:

 frame1.type()  is 16 
frame2.type() is 21

мой вопрос: как я могу изменить тип frame2 на 16 без потери его данных? Я попробовал frame2.convertTo (), это не сработало.

Есть идеи ?

1
nl ja de

1 ответы

Из того, что я понимаю, вы хотите преобразовать изображение типа CV_32FC3 (3-канальный поплавок) в CV_8UC3 (3-канальный символ без знака). Это невозможно сделать, не теряя некоторую информацию: в первом случае у вас есть 4 байта на пиксель, а во втором 1 байт на пиксель, так как вы понимаете, что будет какая-то потеря.

Этот код используется для преобразования в другой тип и отлично подходит для меня:

cv::Mat A = cv::Mat(480, 640, CV_32FC3, CV_RGB(1.0,1.0,1.0));
cv::Mat B;
A.convertTo(B, CV_8UC3);
1
добавлено
Я согласен с тем, что мне нужно потерять некоторые данные, но моя проблема в том, что я теряю все
добавлено автор Engine, источник
все мои данные теряются в кадре с 0
добавлено автор Engine, источник
@Engine Что вы подразумеваете под «всем»?
добавлено автор Sassa, источник
@Engine Смотрите новое редактирование. Если это не работает для вас, вы должны предоставить соответствующий код (где вы объявляете и инициализируете свои матрицы и как вы вызываете convertTo() , иначе я не могу просто догадаться, что происходит не так). Кроме того, вы проверяете значения после и все они 0 или вы просто показываете изображение, и все черное? (Если случай второй, вы должны умножить на 255, чтобы вы могли видеть изображение.)
добавлено автор Sassa, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest