Я использую OpenCV 2 для некоторых манипуляций с изображениями в цветовом пространстве YCbCr. На данный момент я могу обнаружить некоторый шум из-за преобразования RGB -> YCbCr, а затем YCbCr -> RGB, но, как сказано в документация:
Если вы используете cvtColor с 8-битными изображениями, при преобразовании будет потеряна некоторая информация. Для многих приложений это не будет заметно, но рекомендуется использовать 32-битные изображения в приложениях, которым нужен полный диапазон цветов или которые перед операцией конвертируют изображение, а затем обратно.
Итак, я хотел бы преобразовать свое изображение в 16 или 32 бита, но я не нашел, как это сделать с помощью NumPy. Некоторые идеи?
img = cv2.imread(imgNameIn)
# Here I want to convert img in 32 bits
cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB, img)
# Some image processing ...
cv2.cvtColor(img, cv2.COLOR_YCR_CB2BGR, img)
cv2.imwrite(imgNameOut, img, [cv2.cv.CV_IMWRITE_PNG_COMPRESSION, 0])