像素数组转换为BMP,该如何处理
像素数组转换为BMP
现在我通过相机采集到了原始像素数组(320×256),图像是16位的,即2个字节代表一个像素。
如何将像素数组转换为BMP,或者将像素数组赋值给Mat(OpenCV2.×)及IplImg(OpenCV1.×)。
------解决方案--------------------
每一个像素应该使用了rgb来组成的,知道行列数,按照bmp的文件格式就可以生成bmp文件了
------解决方案--------------------
16位位图的存储方式有2种,RGB5551和RGB565。
------解决方案--------------------
照相机的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图片格式
------解决方案--------------------
楼主看这里:http://blog.****.net/dijkstar/article/details/20854709,这是一个从bmp文件用像素点阵显示的程序,反过来就是知道了这些像素数组,可以生成一副bmp位图
------解决方案--------------------
按照gbr顺序好像是,赋值给mat,完后imwrite就行了
------解决方案--------------------
若转RGB方式需要16位颜色索引表,这有份下载的http://download.****.net/detail/uclearzgh/4599735
------解决方案--------------------
难道你不知道你的数据是 彩色 还是黑白?
现在我通过相机采集到了原始像素数组(320×256),图像是16位的,即2个字节代表一个像素。
如何将像素数组转换为BMP,或者将像素数组赋值给Mat(OpenCV2.×)及IplImg(OpenCV1.×)。
------解决方案--------------------
每一个像素应该使用了rgb来组成的,知道行列数,按照bmp的文件格式就可以生成bmp文件了
------解决方案--------------------
16位位图的存储方式有2种,RGB5551和RGB565。
------解决方案--------------------
照相机的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图片格式
------解决方案--------------------
楼主看这里:http://blog.****.net/dijkstar/article/details/20854709,这是一个从bmp文件用像素点阵显示的程序,反过来就是知道了这些像素数组,可以生成一副bmp位图
------解决方案--------------------
按照gbr顺序好像是,赋值给mat,完后imwrite就行了
------解决方案--------------------
若转RGB方式需要16位颜色索引表,这有份下载的http://download.****.net/detail/uclearzgh/4599735
------解决方案--------------------
照相机的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图像,三个分量是怎么排序的?
难道你不知道你的数据是 彩色 还是黑白?