群711841924
importPackage(org.opencv.core);
importPackage(org.opencv.imgproc);
importPackage(org.opencv.android);
importClass(android.graphics.Bitmap);
function screenshotAndBinarize(width, height, quality, threshold1, threshold2) {
var bitmap = screen.screenShot(width, height, quality).getBitmap();
var mat = new Mat();
Utils.bitmapToMat(bitmap, mat);
var binaryMat = new Mat();
Imgproc.threshold(mat, binaryMat, threshold1, threshold2, Imgproc.THRESH_BINARY);
printl(binaryMat);
var binaryBitmap = Bitmap.createBitmap(binaryMat.cols(), binaryMat.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(binaryMat, binaryBitmap);
printl(binaryBitmap);
return binaryBitmap;
}
var resultBitmap = screenshotAndBinarize(640, 960, 100, 50, 150);
代码结构引入库和类 importPackage 和 importClass 用于导入OpenCV和Android中相关类和包,这在使用其函数时是必需的。
函数定义 screenshotAndBinarize : 封装了对屏幕截图进行二值化处理的所有步骤。
函数参数 width : 截图的宽度。height : 截图的高度。quality : 截图的质量。threshold1 : 二值化过程中使用的阈值1。threshold2 : 二值化过程中使用的阈值2。
代码步骤屏幕截图 var bitmap = screen.screenShot(width, height, quality).getBitmap();
- 使用给定的宽度、高度和质量参数进行屏幕截图,结果是一个
Bitmap 对象。
Bitmap 转 Mat var mat = new Mat();
Utils.bitmapToMat(bitmap, mat);
- 创建一个
Mat 对象。Utils.bitmapToMat 将 Bitmap 转换为 OpenCV 的 Mat 对象,便于后续的图像处理操作。
二值化处理 var binaryMat = new Mat();
Imgproc.threshold(mat, binaryMat, threshold1, threshold2, Imgproc.THRESH_BINARY);
printl(binaryMat);
- 初始化一个新的
Mat 对象 binaryMat 用于存储处理后的图像。 - 使用
Imgproc.threshold 方法对图像进行二值化处理。 threshold1 和 threshold2 是用于二值化的阈值。Imgproc.THRESH_BINARY 表示采用二值化处理方法。
Mat 转 Bitmap var binaryBitmap = Bitmap.createBitmap(binaryMat.cols(), binaryMat.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(binaryMat, binaryBitmap);
printl(binaryBitmap);
- 创建一个新的
Bitmap 对象,用于存储二值化后的图像。 - 将
binaryMat 转换回 Bitmap 。
返回值 return binaryBitmap;
调用示例var resultBitmap = screenshotAndBinarize(640, 960, 100, 50, 150);
|