自动发帖软件

标题: AIWORK软件图像视觉处理[opencv]小结1 [打印本页]

作者: 发帖软件    时间: 7 小时前
标题: AIWORK软件图像视觉处理[opencv]小结1
AIWORK软件图像视觉处理[opencv]小结1

AIWORK软件图像视觉处理[opencv]小结1 群发软件发帖工具

AIWORK软件图像视觉处理[opencv]小结1 群发软件发帖工具

AIWORK软件图像视觉处理[opencv]小结1 群发软件发帖工具

🎨图像视觉处理[opencv]小结1

// 1. HSV颜色变换:对图像进行HSV通道的颜色变换,可调整色相、饱和度、对比度
// 参数说明:输入图像(Mat)、色相参数(int)、饱和度参数(int)、对比度参数(int)
// 返回值:处理后的Mat图像
function hsvTransform() {
    // 截取屏幕区域(432,768)大小、100质量的图像并转为Mat格式
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 调用HSV变换:色相17、饱和度17、对比度17
    opencv.HSV(mat, 17, 17, 17);
    // 输出处理结果
    printl(mat);
    return mat;
}
let hsvResult = hsvTransform();


// 2. 对比度调整:调整图像对比度,通过阈值控制强弱
// 参数说明:输入图像(Mat)、对比度阈值(double,值越大对比度越强)
// 返回值:处理后的Mat图像
function adjustContrast() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 调整对比度:阈值0.5(降低对比度)
    opencv.adjustContrast(mat, 0.5);
    printl(mat);
    return mat;
}
let contrastResult = adjustContrast();


// 3. Bitmap转Mat:将Bitmap格式图像转换为OpenCV处理用的Mat格式
// 参数说明:输入图像(Bitmap)
// 返回值:转换后的Mat图像
function bitmapToMat() {
    // 先获取屏幕截图的Bitmap对象
    var screenshot = screen.screenShot(432, 768, 100);
    var bmp = screenshot.getBitmap();
    // 转换为Mat格式
    var mat = opencv.bitmapToMat(bmp);
    printl(mat);
    return mat;
}
let matFromBmp = bitmapToMat();


// 4. 颜色过滤:保留设定的目标颜色,过滤其他颜色,适用于固定颜色目标筛选
// 参数说明:输入图像(Mat)、目标颜色数组(String[],格式["#RRGGBB",...])、匹配阈值(int)
// 返回值:过滤后的Mat图像
function colorFilter() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 定义目标颜色数组(土黄、金黄等)
    var colors = ["#615018", "#D9C15D", "#010000", "#F4C51F"];
    // 过滤颜色:阈值2(允许轻微颜色偏差)
    mat = opencv.colorFilter(mat, colors, 2);
    printl(mat);
    return mat;
}
let filterResult = colorFilter();


// 5. 区域截图:按百分比裁剪图像或保留指定区域(区域外变白)
// 参数说明:输入图像(Mat)、区域范围(double[],[左上角x%,左上角y%,右下角x%,右下角y%])、是否裁剪(boolean)
// 返回值:处理后的区域图像(Mat)
function extractRegion() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 定义区域:左上角(3.935%,16.406%)到右下角(53.472%,63.281%)
    var region = [0.03935, 0.16406, 0.53472, 0.63281];
    // 处理区域:false表示区域外变白,不裁剪
    opencv.extractRegion(mat, region, false);
    printl(mat);
    return mat;
}
let regionResult = extractRegion();


// 6. 面积过滤:保留图像中面积在指定范围内的区域,过滤过小/过大区域
// 参数说明:输入图像(Mat)、最小面积(double)、最大面积(double)
// 返回值:过滤后的Mat图像
function inArea() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 保留面积1~10000的区域
    opencv.inArea(mat, 1, 10000);
    printl(mat);
    return mat;
}
let areaResult = inArea();


// 7. 边缘提取:基于Canny算法提取图像边缘,高阈值通常为低阈值2~3倍
// 参数说明:输入图像(Mat)、低阈值(double)、高阈值(double)
// 返回值:边缘提取后的Mat图像
function cannyEdge() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 提取边缘:低阈值50,高阈值100(符合2倍关系)
    opencv.Canny(mat, 50, 100);
    printl(mat);
    return mat;
}
let cannyResult = cannyEdge();


// 8. OCR识别:通过训练字库识别指定区域文字,返回识别结果
// 参数说明:输入图像(Mat)、字库路径(String)、相似度(double 0~1)、预期文字数(int)、识别区域(double[])
// 返回值:ocrResult对象(含文字及位置信息)
function ocr() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 识别区域:全图([0,0,1,1]表示0%~100%范围)
    var ocrRegion = [0, 0, 1, 1];
    // 调用OCR:字库"图色976442.ocr",相似度0.8,不限制文字数
    var ocrRes = opencv.OCR(mat, '图色976442.ocr', 0.8, 0, ocrRegion);
    // 输出识别结果
    ocrRes ? printl("OCR识别结果:" + ocrRes.getAllString()) : print.err('OCR识别失败');
    return ocrRes;
}
let ocrResult = ocr();


// 9. CV文件OCR:通过预定义的CV文件(含字库和区域)进行OCR识别
// 参数说明:CV文件路径(String)
// 返回值:ocrResult对象(含识别结果)
function ocrEx() {
    // 读取CV文件并识别
    var ocrExRes = opencv.OCREx('图色598321.cv');
    ocrExRes ? printl("CV文件OCR结果:" + ocrExRes.getAllString()) : print.err('CV文件OCR失败');
    return ocrExRes;
}
let cvOcrResult = ocrEx();


// 10. 图像平滑:减少图像噪声、模糊图像,通过滤波和去毛边实现
// 参数说明:输入图像(Mat)、滤波值(int,值越大越平滑)、去毛边大小(int)
// 返回值:平滑后的Mat图像
function smooth() {
    var mat = screen.screenShot(432, 768, 100).getMat();
    // 平滑处理:滤波值3,去毛边2
    var smoothMat = opencv.Smooth(mat, 3, 2);
    printl(smoothMat);
    return smoothMat;
}
let smoothResult = smooth();


// 11. 多点比色:验证图像中多个指定坐标的颜色是否符合预期,全匹配返回true
// 参数说明:输入图像(Mat)、目标点数组(String[],格式"x,y,#RRGGBB")、颜色误差(int)、坐标误差(int)、相似度(double)
// 返回值:boolean(是否全匹配)
function checkColors() {
    var mat = screen.screenShot(900, 1600, 100).getMat();
    // 目标点:x,y坐标+颜色(如"325,317,#F4C51F")
    var points = ['325,317,#F4C51F', '357,364,#070200', '336,345,#100500', '356,386,#F4C51F'];
    // 多点比色:颜色误差2,坐标误差5,相似度0.95
    var isMatch = opencv.checkColors(mat, points, 2, 5, 0.95);
    isMatch ? printl('多点比色成功') : print.err('多点比色失败');
    return isMatch;
}
let colorCheckResult = checkColors();


// 12. CV文件多点比色:通过预定义的CV文件(含多点坐标和颜色)验证匹配
// 参数说明:CV文件路径(String)
// 返回值:boolean(是否匹配成功)
function checkColorsEx() {
    // 基于CV文件验证多点比色
    var isExMatch = opencv.checkColorsEx('图色246814.cv');
    isExMatch ? printl('CV文件多点比色成功') : printl('CV文件多点比色失败');
    return isExMatch;
}
let cvColorCheckResult = checkColorsEx();


// 13. 闭运算:先膨胀后腐蚀,用于填充图像小孔、连接邻近区域
// 参数说明:输入图像(Mat)、核大小(int,值越大效果越强)
// 返回值:闭运算处理后的Mat图像
function closeImg() {
    var mat = screen.screenShot(900, 1600, 100).getMat();
    // 闭运算:核大小3
    opencv.closeImg(mat, 3);
    printl(mat);
    return mat;
}
let closeResult = closeImg();

方法 1:HSV 颜色变换

项目

内容

功能

对图像进行 HSV 通道的颜色变换

函数签名

Mat HSV(Mat arg0, int arg1, int arg2, int arg3)

返回值

Mat

参数说明

- Mat arg0

:输入图片- int arg1

:色相参数- int arg2

:饱和度参数- int arg3

:对比度参数

案例

opencv.HSV(Mat, 0, 0, 0)



let mat:Mat=图色875078();
printl(mat);



function 图色875078(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

  //HSV颜色变换
  opencv.HSV(mat,17,17,17)
  return mat;

}

方法 2:对比度调整(adjustContrast

项目

内容

功能

调整图像对比度

函数签名

Mat adjustContrast(Mat arg0, double arg1)

返回值

Mat

参数说明

- Mat arg0

:mat 格式的输入图片- double arg1

:用于调整对比度的阈值

案例

opencv.adjustContrast(Mat, 0)




let mat:Mat=图色195333();
printl(mat);



function 图色195333(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

  //二值化
  opencv.threshold(mat,50,150);
  return mat;

}

方法 3:bitmap 图转 mat(bitmapToMat

项目

内容

功能

将 Bitmap 格式图像转换为 Mat 格式图像

函数签名

Mat bitmapToMat(Bitmap arg0)

返回值

Mat

参数说明

- Bitmap arg0

:Bitmap 格式的输入图像

案例

opencv.bitmapToMat(bmp)

// 先获取截图的Bitmap对象
var screenshot = screen.screenShot(432, 768, 100);
var bmp = screenshot.getBitmap();
// 再将Bitmap转换为Mat
var mat = opencv.bitmapToMat(bmp);

printl(mat)

方法 4:颜色过滤(colorFilter

项目

内容

功能

保留设定的颜色,去除其他颜色;可有效对颜色不变的目标进行筛选

函数签名

Mat colorFilter(Mat arg0, String[] arg1, int arg2)

返回值

Mat

参数说明

- Mat arg0

:输入图片- String[] arg1

:颜色数组(示例:["#000000","#121212"]

- int arg2

:阈值

案例

opencv.colorFilter(Mat, String[], 0)

let mat:Mat=图色254847();
printl(mat);

function 图色254847(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

   //颜色过滤并更新mat变量
   mat = opencv.colorFilter(mat, ["#615018", "#D9C15D", "#010000", "#F4C51F"], 2);
   return mat;
}

方法 5:区域截图(extractRegion

项目

内容

功能

图片按照设定百分比区域进行裁剪;第三个参数为是否剪切:若为true

,则减掉多余区域只保留设定图像;若为false

,则把区域外的图变成白色、区域内保持不变

函数签名

Mat extractRegion(Mat arg0, double[] arg1, boolean arg2)

返回值

Mat

参数说明

- Mat arg0

:输入图片- double[] arg1

:百分比区域- boolean arg2

:是否裁剪

案例

opencv.extractRegion(Mat, double[], true)



let mat:Mat=图色651862();
printl(mat);



function 图色651862(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

  //区域截图
  opencv.extractRegion(mat,[0.0393518518518519,0.1640625,0.534722222222222,0.6328125],false)
  return mat;

}

方法 6:面积过滤(inArea

项目

内容

功能

面积过滤

函数签名

Mat inArea(Mat arg0, double arg1, double arg2)

返回值

Mat

参数说明

- Mat arg0

:mat 格式的输入图片- double arg1

:最小面积- double arg2

:最大面积

案例

opencv.inArea(Mat, 0, 0)



let mat:Mat=图色100892();
printl(mat);



function 图色100892(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

  //面积过滤
  opencv.inArea(mat,1,10000)
  return mat;

}

方法 7:边缘提取(Canny

项目

内容

功能

提取图像边缘;一般高阈值是低阈值的 2 - 3 倍(例如低阈值为 50 时,高阈值为 150)

函数签名

Mat Canny(Mat arg0, double arg1, double arg2)

返回值

Mat

参数说明

- Mat arg0

:输入图像- double arg1

:最低阈值- double arg2

:最高阈值

案例

opencv.Canny(mat, 50, 150)



let mat:Mat=图色734271();
printl(mat);



function 图色734271(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

  //边缘提取
  opencv.Canny(mat,50,100)
  return mat;

}

方法 8:OCR(OCR

项目

内容

功能

通过训练字库识别 OCR

函数签名

ocrResult OCR(Mat arg0, String arg1, double arg2, int arg3, double[] arg4)

返回值

ocrResult

参数说明

- Mat arg0

:图片- String arg1

:字库文件- double arg2

:相似度- int arg3

:文字数量- double[] arg4

:区域范围

案例

opencv.OCR(Mat,"",0,0,double[])



var ocrcrResult=图色976442();
if(ocr!=null){
   printl(ocr.getAllString())
   
}else{
   print.err('查找图色976442失败')
}



function 图色976442(){
   //截屏并转成mat格式
   var mat=screen.screenShot(432,768,100).getMat();

  //OCR
  return opencv.OCR(mat,'图色976442.ocr',0.8,0,[0,0,1,1])
}

方法 9:cv 文件 OCR(OCREx

项目

内容

功能

cv 文件 OCR(对指定 cv 文件进行 OCR 识别)

函数签名

ocrResult OCREx(String arg0)

返回值

ocrResult

参数说明

- String arg0

:cv 文件名

案例

opencv.OCREx("")

var ocr1=opencv.OCREx('图色598321.cv');
if(ocr1!=null){
   printl(ocr1.getAllString());
}

方法 10:图像平滑(Smooth

项目

内容

功能

图像平滑

函数签名

Mat Smooth(Mat arg0, int arg1, int arg2)

返回值

Mat

参数说明

- Mat arg0

:mat 格式的输入图片- int arg1

:滤波值- int arg2

:去毛边大小

案例

opencv.Smooth(Mat, 0, 0)

var mat = screen.screenShot(432, 768, 100).getMat();
var smoothMat = opencv.Smooth(mat, 0, 0);
printl(smoothMat);

方法 11:多点比色(checkColors

项目

内容

功能

多点比色;从图像中遍历查找所有的坐标和对应的颜色是否符合,符合返回true

,有一个不符则返回false

函数签名

boolean checkColors(Mat arg0, String[] arg1, int arg2, int arg3, double arg4)

返回值

boolean

参数说明

- Mat arg0

:mat 格式图片- String[] arg1

:颜色数组(示例:['10,9,#123233','9,9,#434323']

- int arg2

:颜色误差范围- int arg3

:坐标误差范围- double arg4

:相似度

案例

opencv.checkColors(Mat, String[], 0, 0, 0)



var result=图色717031();
if(result==true){
   printl('找到图色717031')
  
}else{
  print.err('查找图色717031失败')
}
            

function 图色717031(){
   //截屏并转成mat格式
   var mat=screen.screenShot(900,1600,100).getMat();

  //比色
  return opencv.checkColors(mat,['325,317,#F4C51F','357,364,#070200','336,345,#100500','356,386,#F4C51F'],2,5,0.95)
}

方法 12:cv 文件多点比色(checkColorsEx

项目

内容

功能

cv 文件多点比色

函数签名

boolean checkColorsEx(String arg0)

返回值

boolean

参数说明

- String arg0

:cv 文件名

案例

opencv.checkColorsEx("")

//比色是否成功
var find=opencv.checkColorsEx('图色246814.cv');
if(find==true){
   printl('找到');
}

方法 13:闭运算(closeImg

项目

内容

功能

闭运算

函数签名

Mat closeImg(Mat arg0, int arg1)

返回值

Mat

参数说明

- Mat arg0

:输入图片- int arg1

:核大小

案例

opencv.closeImg(Mat, 0)



let mat:Mat=图色308249();
printl(mat);



function 图色308249(){
   //截屏并转成mat格式
   var mat=screen.screenShot(900,1600,100).getMat();

  //闭运算
  opencv.closeImg(mat,3)
  return mat;

}





欢迎光临 自动发帖软件 (http://www.fatiegongju.com/) Powered by Discuz! X3.2