我正在尝试使用opencv 2.4.3读取16位彩色TIF。问题是我无法满足任何需求。我得到的只是一连串的黑线和灰线。
我尝试过不同的方式来阅读图片:
cv::Mat cvimage = cv::imread(imageFile, CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYDEPTH);
cv::Mat cvimage = cv::imread(imageFile, CV_LOAD_IMAGE_UNCHANGED);
cv::imshow("image", cvimage);
正如预期的那样, type
cvimage是CV_16UC3
。
使用opencv读取16位图像的正确方法是什么?
答案 0 :(得分:3)
尝试:
cv::Mat cvimage = cv::imread(imageFile
, CV_LOAD_IMAGE_ANYCOLOR | CV_LOAD_IMAGE_ANYDEPTH);
如果这不起作用,您可以先将其转换为PNG
,因为OpenCV可以正确读取甚至写入16位PNG文件。您可以将TIFF
转换为PNG
而不会丢失。
cv::Mat cvimage = cv::imread(imageFile, -1);