Как я могу прочитать 16-битные целые числа со знаком с моей камеры?

#c #image #opencv #real-time

#c #изображение #opencv #в режиме реального времени

Вопрос:

Я использую OpenCV для вычисления разницы между изображениями в 8-битных оттенках серого. Ни cv::substract, ни cv:: absdiff не выполняют эту работу, поэтому мне также нужно сохранить отрицательные значения. Поэтому я попытался преобразовать оба изображения в CV_16S, но это занимает довольно много времени и снижает скорость моего приложения реального времени. Есть ли способ напрямую считывать изображения с камеры как CV_16S? Я пытался

 cap.set(CAP_PROP_FORMAT, CV_16S);
  

но изображения из cap.read () по-прежнему отображаются как 8-битные.

Комментарии:

1. используйте параметр dtype в cv::subtract: docs.opencv.org/2.4/modules/core/doc / …

2. Можете ли вы позволить себе уменьшить изображения до 7-битных оттенков серого? (0 .. 127) Тогда, по крайней мере, вы знаете, что результаты в диапазоне 129u .. 255u на самом деле отрицательные.

3. Спасибо вам обоим! Я пытаюсь извлечь очень разумную информацию из изображений, поэтому я решил на данный момент не использовать 7bit. dtype — это именно тот вариант, который я искал, он немного быстрее, чем раньше, и намного приятнее.