1频道iplimage - > Android位图

时间:2012-01-10 17:10:59

标签: android opencv bitmap

我需要在Android Bitmap中转换单通道iplimage(灰色)。我有:

IplImage aux = IplImage.create(senal_gray.width, senal_gray.height, IPL_DEPTH_8U, 4); 
cvCvtColor(senal_gray, aux, CV_GRAY2BGRA);
Bitmap bm = Bitmap.createBitmap(aux.width, aux.height, Bitmap.Config.ARGB_8888);
bm.copyPixelsFromBuffer(aux.getByteBuffer());

我认为这个问题是按频道顺序排列的,因为有了这段代码,我得到了半透明的图片。也许我需要更改“aux”中的通道顺序以获取ARGB顺序并检查位图配置(ARGB_8888)。这可能吗?

1 个答案:

答案 0 :(得分:0)

我从未使用Android的OpenCV绑定,但这里有一些代码可以帮助您入门。把它看作伪代码,因为我无法尝试...但你会得到基本的想法。

public static Bitmap IplImageToBitmap(IplImage src) {
    int width = src.width;
    int height = src.height;
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    for(int r=0;r<height;r++) {
        for(int c=0;c<width;c++) {
            int gray = (int) Math.floor(cvGet2D(src,r,c).getVal(0));
            bitmap.setPixel(c, r, Color.argb(255, gray, gray, gray));
        }
    }
    return bitmap;
}