2013-09-23 3 views
1

Я создал пример изображения с яркостью, настроенной в Android. Я использовал Bitmap для настройки яркости, но для запуска требуется очень много времени. Вместо этого я хочу установить яркость изображения в Android с помощью OpenCV.Как настроить яркость изображения в Android с помощью OpenCV?

Это мой пример кода, но только изменяет цвет изображения:

Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
      R.drawable.a001); 
int width = bmp.getWidth(); 
int height = bmp.getHeight(); 
Mat mRgba = new Mat(width, height, CvType.CV_8UC1); 
Utils.bitmapToMat(bmp, mRgba); 
Mat mRay = new Mat(); 
Imgproc.cvtColor(mRgba, mRay, Imgproc.COLOR_BGRA2RGB, 4); 
Utils.matToBitmap(mRay, bmp); 
mImageview_01.setImageBitmap(bmp); 

[Update] я пытаюсь добавить код, но это ошибка

Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
      R.drawable.a001); 
int width = bmp.getWidth(); 
int height = bmp.getHeight(); 
Mat mRgba = new Mat(width, height, CvType.CV_8UC1); 
Utils.bitmapToMat(bmp, mRgba); 
Mat mRay = new Mat(); 
Imgproc.cvtColor(mRgba, mRay, Imgproc.COLOR_BGRA2RGB, 4); 
/* 
* Use Adaptive Thresholding on the grayscaled Mats crop -> threshed Mat 
* src, Mat dst, double maxValue, int adaptiveMethod, int thresholdType, 
* int blockSize, double C 
*/ 
Imgproc.adaptiveThreshold(threshed, threshed, 255, 
      Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY_INV, 15, 8); 
Utils.matToBitmap(mRay, bmp); 
mImageview_01.setImageBitmap(bmp); 

[ Ошибка]

CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/thresh.cpp:796: error: (-215) src.type() == CV_8UC1 in function void cv::adaptiveThreshold(cv::InputArray, cv::OutputArray, double, int, int, int, double) 

Pls рассматривает примеры того, что я пытаюсь сделать here.

+0

Imgproc.cvtColor (mRgba, mRay, Imgproc.CV_MEDIAN, 4); // это, скорее всего, неправильно. вы должны питаться значениями Imgproc.COLOR_ * здесь, по чистой вероятности Imgproc.CV_MEDIAN - 3, которые интерпретируются как COLOR_BGRA2RGB. не то, что вы хотели, не так ли? – berak

+0

Хорошо, это моя ошибка, но это не моя проблема. Я хочу установить яркость, мне не нужен цвет изменения. Пример ссылки Pls view. –

ответ

1

проверка пример, приведенный на увеличение/уменьшение Яркость изображения

Pls увидеть этот

int brightness; 
SeekBar seekBarBrightness=(SeekBar)findViewById(R.id.seekBar1); 
seekBarBrightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

    @Override 
    public void onStopTrackingTouch(SeekBar arg0) { 


    } 

    @Override 
    public void onStartTrackingTouch(SeekBar arg0) { 


    } 

    @Override 
    public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { 

     Bitmap newBitMap = doBrightness(bitMap,progress); 

     imageView.setImageBitmap(newBitMap); 

    } 
    }); 




    public static Bitmap doBrightness(Bitmap src, int value) 
    { 
     // image size 
     int width = src.getWidth(); 
     int height = src.getHeight(); 
     // create output bitmap 
     Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); 
     // color information 
     int A, R, G, B; 
     int pixel; 

     // scan through all pixels 
     for (int x = 0; x < width; ++x) 
      { 
       for (int y = 0; y < height; ++y) 
        { 
         // get pixel color 
         pixel = src.getPixel(x, y); 
         A = Color.alpha(pixel); 
         R = Color.red(pixel); 
         G = Color.green(pixel); 
         B = Color.blue(pixel); 

         // increase/decrease each channel 
         R += value; 
         if (R > 255) 
          { 
           R = 255; 
          } else if (R < 0) 
          { 
           R = 0; 
          } 

         G += value; 
         if (G > 255) 
          { 
           G = 255; 
          } else if (G < 0) 
          { 
           G = 0; 
          } 

         B += value; 
         if (B > 255) 
          { 
           B = 255; 
          } else if (B < 0) 
          { 
           B = 0; 
          } 

         // apply new pixel color to output bitmap 
         bmOut.setPixel(x, y, Color.argb(A, R, G, B)); 
        } 
      } 

     // return final image 
     return bmOut; 
    } 
Смежные вопросы