像素数组转换为BMP

zj0789 2014-06-28 06:20:19
现在我通过相机采集到了原始像素数组(320×256),图像是16位的,即2个字节代表一个像素。
如何将像素数组转换为BMP,或者将像素数组赋值给Mat(OpenCV2.×)及IplImg(OpenCV1.×)。
...全文
547 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zj0789 2014-07-04
  • 打赏
  • 举报
回复
引用 12 楼 relaxisland 的回复:
[quote=引用 11 楼 relaxisland 的回复:] [quote=引用 8 楼 zj0789 的回复:] [quote=引用 5 楼 relaxisland 的回复:] 照相机的raw数据一般是 Bayer图像格式的。 每个像素代表R,G,B中的一种元素,不同的相机的排列顺序可能不同,一种方式是如下 第一行:RGRGRGRG 第二行:GBGBGBGB 第三行:RGRGRGRG 第四行:GBGBGBGB 可以通过要计算的某个像素为中心的9个像素来计算 R,G,B的平局值 比如要计算第二行第三列像素的RGB, R:周围9个像素只有2个R, 这2个R取平均,就求得改像素的R的值 同样的方法,可以求出G,B: G是5个取平均, B是2个取平均 #具体的格式需要参照 相机提供的吧 由于你的数据是16位的, 计算出R,G,B之后还的 换算到bmp图片能接受的0--255范围。 opencve可以如下函数, 转换格式应该是 CV_BayerBG2BGR 系列的。 cv::cvtColor #具体可以谷歌或百度 bayer图片格式
有点进展,相机采集的数据实际长度是12bit的,为了输出是8的倍数上升为16位输出。 12位的数据,有没有可能是灰度图?如果是RGB图像,三个分量是怎么排序的?[/quote] 难道你不知道你的数据是 彩色 还是黑白? [/quote] 数据 改成 相机 [/quote] 是黑白的,所以现在决定将12位数据类型右移四位,变为八位的数据,可以方便的生成灰度图。失真肉眼也分辨不出来
许文君 2014-07-01
  • 打赏
  • 举报
回复
若转RGB方式需要16位颜色索引表,这有份下载的http://download.csdn.net/detail/uclearzgh/4599735
zj0789 2014-07-01
  • 打赏
  • 举报
回复
也就是说相机的AD转换位数是12位,一个像素的灰度值被转换成了12位的数据。 将它降位8位的灰度图像(右移四位),可以显示。但这种方法必然会导致失真。 是否可以将其升为24位图像?
zj0789 2014-07-01
  • 打赏
  • 举报
回复
引用 5 楼 relaxisland 的回复:
照相机的raw数据一般是 Bayer图像格式的。 每个像素代表R,G,B中的一种元素,不同的相机的排列顺序可能不同,一种方式是如下 第一行:RGRGRGRG 第二行:GBGBGBGB 第三行:RGRGRGRG 第四行:GBGBGBGB 可以通过要计算的某个像素为中心的9个像素来计算 R,G,B的平局值 比如要计算第二行第三列像素的RGB, R:周围9个像素只有2个R, 这2个R取平均,就求得改像素的R的值 同样的方法,可以求出G,B: G是5个取平均, B是2个取平均 #具体的格式需要参照 相机提供的吧 由于你的数据是16位的, 计算出R,G,B之后还的 换算到bmp图片能接受的0--255范围。 opencve可以如下函数, 转换格式应该是 CV_BayerBG2BGR 系列的。 cv::cvtColor #具体可以谷歌或百度 bayer图片格式
有点进展,相机采集的数据实际长度是12bit的,为了输出是8的倍数上升为16位输出。 12位的数据,有没有可能是灰度图?如果是RGB图像,三个分量是怎么排序的?
relaxisland 2014-07-01
  • 打赏
  • 举报
回复
引用 11 楼 relaxisland 的回复:
[quote=引用 8 楼 zj0789 的回复:] [quote=引用 5 楼 relaxisland 的回复:] 照相机的raw数据一般是 Bayer图像格式的。 每个像素代表R,G,B中的一种元素,不同的相机的排列顺序可能不同,一种方式是如下 第一行:RGRGRGRG 第二行:GBGBGBGB 第三行:RGRGRGRG 第四行:GBGBGBGB 可以通过要计算的某个像素为中心的9个像素来计算 R,G,B的平局值 比如要计算第二行第三列像素的RGB, R:周围9个像素只有2个R, 这2个R取平均,就求得改像素的R的值 同样的方法,可以求出G,B: G是5个取平均, B是2个取平均 #具体的格式需要参照 相机提供的吧 由于你的数据是16位的, 计算出R,G,B之后还的 换算到bmp图片能接受的0--255范围。 opencve可以如下函数, 转换格式应该是 CV_BayerBG2BGR 系列的。 cv::cvtColor #具体可以谷歌或百度 bayer图片格式
有点进展,相机采集的数据实际长度是12bit的,为了输出是8的倍数上升为16位输出。 12位的数据,有没有可能是灰度图?如果是RGB图像,三个分量是怎么排序的?[/quote] 难道你不知道你的数据是 彩色 还是黑白? [/quote] 数据 改成 相机
relaxisland 2014-07-01
  • 打赏
  • 举报
回复
引用 8 楼 zj0789 的回复:
[quote=引用 5 楼 relaxisland 的回复:] 照相机的raw数据一般是 Bayer图像格式的。 每个像素代表R,G,B中的一种元素,不同的相机的排列顺序可能不同,一种方式是如下 第一行:RGRGRGRG 第二行:GBGBGBGB 第三行:RGRGRGRG 第四行:GBGBGBGB 可以通过要计算的某个像素为中心的9个像素来计算 R,G,B的平局值 比如要计算第二行第三列像素的RGB, R:周围9个像素只有2个R, 这2个R取平均,就求得改像素的R的值 同样的方法,可以求出G,B: G是5个取平均, B是2个取平均 #具体的格式需要参照 相机提供的吧 由于你的数据是16位的, 计算出R,G,B之后还的 换算到bmp图片能接受的0--255范围。 opencve可以如下函数, 转换格式应该是 CV_BayerBG2BGR 系列的。 cv::cvtColor #具体可以谷歌或百度 bayer图片格式
有点进展,相机采集的数据实际长度是12bit的,为了输出是8的倍数上升为16位输出。 12位的数据,有没有可能是灰度图?如果是RGB图像,三个分量是怎么排序的?[/quote] 难道你不知道你的数据是 彩色 还是黑白?
shiter 2014-06-30
  • 打赏
  • 举报
回复
按照gbr顺序好像是,赋值给mat,完后imwrite就行了
dijkstar 2014-06-29
  • 打赏
  • 举报
回复
楼主看这里:http://blog.csdn.net/dijkstar/article/details/20854709,这是一个从bmp文件用像素点阵显示的程序,反过来就是知道了这些像素数组,可以生成一副bmp位图
relaxisland 2014-06-28
  • 打赏
  • 举报
回复
照相机的raw数据一般是 Bayer图像格式的。 每个像素代表R,G,B中的一种元素,不同的相机的排列顺序可能不同,一种方式是如下 第一行:RGRGRGRG 第二行:GBGBGBGB 第三行:RGRGRGRG 第四行:GBGBGBGB 可以通过要计算的某个像素为中心的9个像素来计算 R,G,B的平局值 比如要计算第二行第三列像素的RGB, R:周围9个像素只有2个R, 这2个R取平均,就求得改像素的R的值 同样的方法,可以求出G,B: G是5个取平均, B是2个取平均 #具体的格式需要参照 相机提供的吧 由于你的数据是16位的, 计算出R,G,B之后还的 换算到bmp图片能接受的0--255范围。 opencve可以如下函数, 转换格式应该是 CV_BayerBG2BGR 系列的。 cv::cvtColor #具体可以谷歌或百度 bayer图片格式
lis2012 2014-06-28
  • 打赏
  • 举报
回复
引用 3 楼 zj0789 的回复:
[quote=引用 2 楼 lis2012 的回复:] 每一个像素应该使用了rgb来组成的,知道行列数,按照bmp的文件格式就可以生成bmp文件了
如果2个字节代表一个像素值,如何提取出rgb三个分量的值?[/quote] 16位位图的存储方式有2种,RGB5551和RGB565。
zj0789 2014-06-28
  • 打赏
  • 举报
回复
引用 2 楼 lis2012 的回复:
每一个像素应该使用了rgb来组成的,知道行列数,按照bmp的文件格式就可以生成bmp文件了
如果2个字节代表一个像素值,如何提取出rgb三个分量的值?
lis2012 2014-06-28
  • 打赏
  • 举报
回复
每一个像素应该使用了rgb来组成的,知道行列数,按照bmp的文件格式就可以生成bmp文件了
dvlinker 2014-06-28
  • 打赏
  • 举报
回复
帮忙顶一下!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧