gpt4 book ai didi

c++ - imread 的像素类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:37 24 4
gpt4 key购买 nike

imread 创建的默认像素类型是什么?我测试了不同的图像,它们都给我未签名的具有不同 channel 的字符。如果我不问的话,imread 会用 signed char 创建一个像素类型吗明确?

cv::Mat img = cv::imread("lena.jpg", -1); //always give me unsigned char

我查看了cv::imread的文档,但是没有提到imread create的默认像素。

文档链接 http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#Mat imread(const string& filename, int flags)

最佳答案

大多数 .jpg 图像都是 8 位图像。因此它们的默认数据类型是 unsigned charchar

一些图像如.png.tif 也支持16 位像素值,所以它们的数据类型是unsigned short。但这不是必需的,因为它们可能是 8 位的。

要在 OpenCV 中按原样加载图像,请像这样使用 imread:

cv::Mat img = cv::imread(imagePath, CV_LOAD_IMAGE_ANYCOLOR | CV_LOAD_IMAGE_ANYDEPTH);

这些标志有不同的组合:

加载为 8 位(无论原始深度是多少):

CV_LOAD_IMAGE_COLOR

以原始深度加载:

CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYDEPTH

加载为灰度(无论图像有多少 channel ):

CV_LOAD_IMAGE_GRAYSCALE

加载为具有原始深度的灰度图:

CV_LOAD_IMAGE_GRAYSCALE| CV_LOAD_IMAGE_ANYDEPTH

在您的例子中,lena.jpg 是 8 位图像,因此您得到的是 unsigned char 数据类型。

更新:

对于较新版本的 OpenCV,请使用 C++ 接口(interface)中枚举定义的标志。只需将 CV_LOAD_IMAGE_* 替换为 cv::IMREAD_*

例如CV_LOAD_IMAGE_GRAYSCALE 变为 cv::IMREAD_GRAYSCALE

关于c++ - imread 的像素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com