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