我正在使用OpenCV2在YCbCr色域中进行一些图像处理。目前我可以检测到由于RGB -> YCbCr转换以及YCbCr -> RGB转换引起的一些噪点,但如文档中所述:
如果您使用8位图像进行cvtColor,则会丢失某些信息。对于许多应用程序,这可能不会被注意到,但建议在需要完整颜色范围或在操作之前转换图像然后再次转换的应用程序中使用32位图像。
因此,我想将我的图像转换为16位或32位,但我没有找到如何在NumPy中实现它的方法。有什么想法吗?
如果您使用8位图像进行cvtColor,则会丢失某些信息。对于许多应用程序,这可能不会被注意到,但建议在需要完整颜色范围或在操作之前转换图像然后再次转换的应用程序中使用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])