gpt4 book ai didi

c++ - OpenCV 加载 CIE L*a*b* 图像

转载 作者:行者123 更新时间:2023-11-27 22:37:08 25 4
gpt4 key购买 nike

我正在尝试在 C++ 中使用 openCV 加载 CIE Lab* 图像。在网上我只能找到加载 RGB 图像并将其转换为 LAB 图像的示例,但我已经有了 LAB 图像,所以如何加载它而不是访问 L、a 和 b 的值?

我找到的唯一方法是将 LAB 图像视为 RGB 图像并使用以下方法将其转换为 Lab 图像:

cvtColor(source, destination, CV_BGR2Lab);

但我认为这不是解决问题的好方法,因为如果我这样做,转换后的图像看起来与原始图像有很大不同。

带有测试图像和以下代码:

    originalImage = imread(originalImagePath, CV_LOAD_IMAGE_UNCHANGED);
cout << originalImage.type() << endl;
Mat originalImageSplitted[3];
split(originalImage, originalImageSplitted);
cout << originalImageSplitted[0] << endl;
cout << originalImageSplitted[1] << endl;
cout << originalImageSplitted[2] << endl;

我得到结果:

0
[]
[]
[]

最佳答案

不是真正的答案,但评论太多了。

您可以在 Linux、macOS 或 Windows 的终端中使用 ImageMagick 制作一个 Lab 色彩空间 TIF 文件进行测试:

convert -depth 8 xc:black xc:white xc:red xc:lime xc:blue +append -colorspace Lab result.tif

如果我将它放大,它看起来像这样,因为它目前只有 5 像素宽和 1 像素高:

enter image description here

然后您可以转储像素以查看它们的值,并希望找出 OpenCV 正在做什么:

convert result.tif txt:

示例输出

# ImageMagick pixel enumeration: 5,1,65535,cielab
0,0: (0,-0.5,-0.5) #000000 cielab(0%,-0.000762951%,-0.000762951%) <--- black pixel
1,0: (65535,-0.5,-0.5) #FF0000 cielab(100%,-0.000762951%,-0.000762951%) <--- white pixel
2,0: (34952,20559.5,17218.5) #885043 cielab(53.3333%,31.3718%,26.2737%) <--- red pixel
3,0: (57568,-22102.5,21330.5) #E00053 cielab(87.8431%,-33.7263%,32.5483%) <--- green pixel
4,0: (21074,20302.5,-27756.5) #524F00 cielab(32.1569%,30.9796%,-42.3537%) <--- blue pixel

查看红色像素,您会得到:

  • L=53.33%
  • a=256的31.37%,即80.3
  • b=256的26.27%,即67.2

关于c++ - OpenCV 加载 CIE L*a*b* 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821900/

25 4 0
文章推荐: iphone - 不希望电话链接在浏览器中只调用电话
文章推荐: javascript - 带有 svg 和(双击)点击事件的 标签
文章推荐: C++ Win32 线程