Iplimage 1 канал -> Android растровое изображение - PullRequest
1 голос
/ 10 января 2012

Мне нужно конвертировать 1-канальное изображение (серый) в растровое изображение Android. У меня есть:

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 и проверить с помощью конфигурации Bitmap (ARGB_8888). Возможно ли это?

1 Ответ

0 голосов
/ 14 января 2012

Я никогда не использовал привязки OpenCV для Android, но вот код, который поможет вам начать.Считайте это псевдокодом, потому что я не могу попробовать ... но вы поймете основную идею.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...