相关疑难解决方法(0)

什么是灰度图像的BMP格式?

什么是灰度图像的BMP格式(特别是每像素16位)?在维基百科刚刚谈到的彩色图像为BMP.

更新:

只是为了更新和未来访问者的信息,我将选择PGM,因为它是未压缩的,可以支持16位灰度.另一种选择是使用PNG,但压缩数据(这不是我想要的)的讨论在这里.另请注意,图像可能会显得失真,因为大多数显示器支持256色而不支持4096(16位).所以图像会饱和.

令人惊讶的是,在16位图像的灰度级情况下,BMP 几乎无能为力.
感谢帮助我理解这个问题的人.

file-format image bitmap

13
推荐指数
1
解决办法
3万
查看次数

使用OpenCV将12位拜耳图像转换为8位RGB

我正在尝试使用OpenCV 2.3.1将12位拜耳图像转换为8位RGB图像.这似乎应该使用cvCvtColor函数相当简单,但是当我用这段代码调用它时函数抛出一个异常:

int cvType = CV_MAKETYPE(CV_16U, 1);
cv::Mat bayerSource(height, width, cvType, sourceBuffer);
cv::Mat rgbDest(height, width, CV_8UC3);
cvCvtColor(&bayerSource, &rgbDest, CV_BayerBG2RGB);
Run Code Online (Sandbox Code Playgroud)

我以为我跑过sourceBuffer的末尾,因为输入数据是12位,我必须传入一个16位类型,因为OpenCV没有12位类型.所以我将宽度和高度除以2,但是cvCvtColor仍然抛出了一个没有任何有用信息的异常(错误消息是"Unknown exception").

几个月前发布的一个类似的问题从未得到解答,但由于我的问题更具体地涉及12位拜耳数据,我认为它足够独特,值得一个新问题.

提前致谢.

编辑:我必须遗漏一些东西,因为我甚至无法使用cvCvtColor函数来处理8位数据:

cv::Mat srcMat(100, 100, CV_8UC3);
const cv::Scalar val(255,0,0);
srcMat.setTo(val);
cv::Mat destMat(100, 100, CV_8UC3);
cvCvtColor(&srcMat, &destMat, CV_RGB2BGR);
Run Code Online (Sandbox Code Playgroud)

rgb opencv image

10
推荐指数
2
解决办法
3万
查看次数

标签 统计

image ×2

bitmap ×1

file-format ×1

opencv ×1

rgb ×1