最近在图像分割时用到labelme进行图像标注。将标注好的json转换为label.png,用opencv读取图像时发现全为0。用PIL.Image读能读出标注的label。后来发现opencv在读图像时有几种选择:
import cv2
cv2.imread("filename",flags)
IMREAD_UNCHANGED = -1#不进行转化,比如保存为了16位的图片,读取出来仍然为16位。
IMREAD_GRAYSCALE = 0#进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。
IMREAD_COLOR = 1#进行转化为RGB三通道图像,图像深度转为8位
IMREAD_ANYDEPTH = 2#保持图像深度不变,进行转化为灰度图。
IMREAD_ANYCOLOR = 4#若图像通道数小于等于3,则保持原通道数不变;若通道数大于3则只取取前三个通道。图像深度转为8位
将flag置为2之后读取正常。