android - 如何使用 OpenCV 在 Android 中调整图像亮度?

标签 android opencv image-processing

我创建了一个在 Android 中调整了亮度的示例图像。我使用 Bitmap 来调整亮度,但它需要很长时间才能运行。相反,我想使用 OpenCV 在 Android 中设置图像亮度。

这是我的示例代码,但它只改变图像的颜色:

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);

[更新] 我尝试添加代码,但它出错了

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)

请查看我正在尝试做的事情的例子here .

最佳答案

调整位图亮度的方法有很多,例如ColorMatrix。或 RenderScript .但是,如果您仍然考虑使用 OpenCV,那就是这样:

private Bitmap changeBrightness(Bitmap bmp, int value){
    Mat src = new Mat(bmap.getHeight(),bmap.getWidth(), CvType.CV_8UC1);
    Utils.bitmapToMat(bmap,src);
    src.convertTo(src,-1,1,value);
    Bitmap result = Bitmap.createBitmap(src.cols(),src.rows(), Bitmap.Config.ARGB_8888);
    Utils.matToBitmap(src,result);
    return result;
}

关于android - 如何使用 OpenCV 在 Android 中调整图像亮度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18958792/

相关文章:

java - Android - 多个布局中的相同按钮

java - 为什么我找不到在 Android 手机上创建的文本文件?

c++ - OpenCV + OpenGL - 获取 OpenGL 图像作为 OpenCV 相机

python - 如何在 Python opencv 3.2.0 OSX El Capitan 中手动设置 Facetime 高清摄像头的曝光

iphone - 如何从 iOS 上的实时视频中获取每帧的 RGB 值?

matlab - 如何在 MATLAB 中将移动窗口应用于二维矩阵?

android - 尝试在我的手机上安装应用程序时出现解析错误

android - 当用户点击 HOME 按钮 android 时显示 PIN 屏幕

opencv - convertTo 函数中 Mat 的内存泄漏

c# - 图片上传不损失质量