autojs从书的中间分割成两张

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂

群里有人问

思路

提取书本中间的线-> 切开


提取书本中间的线

Canny 边缘检测


Imgproc.Canny(grayMat, cannyMat, lowThreshold, lowThreshold * ratio, kernel_size, false);


霍夫变换直线检测


function getHoughLinesP(mat, size) {
  let lines = new Mat();
  let threshold = size / 5; // 阈值,只有获得足够交点的极坐标点才被看成是直线
  let minLineSize = size; // 最小直线长度,有默认值0,表示最低线段的长度,比这个设定参数短的线段就不能被显现出来。
  let lineGap = size; // 最大间隔,有默认值0,允许将同一行点与点之间连接起来的最大的距离。
  Imgproc.HoughLinesP(mat, lines, 1, Math.PI / 180, threshold, minLineSize, lineGap);
  return lines;
}


过滤直线

直线的横坐标应该在图片中间


function filterLineDataList(lines) {
  // { angle: 90, distance: 786, x1: 4, y1: 925, x2: 4, y2: 139 },
  let newLines = [];
  var len = lines.length;
  let centerX = img.width / 2;
  for (var i = 0; i < len; i++) {
    let line = lines[i];
    if (Math.abs(line.x1 - centerX) < img.width / 4 && Math.abs(line.x2 - centerX) < img.width / 4) {
      newLines.push(line);
    }
  }
  return newLines;
}


计算切割点

计算直线和上下两边的交点


function getFocusCoordinatesOfTwoLines(line1, line2) {
  var x1 = line1.x1;
  var y1 = line1.y1;
  var x2 = line1.x2;
  var y2 = line1.y2;
  var x3 = line2.x1;
  var y3 = line2.y1;
  var x4 = line2.x2;
  var y4 = line2.y2;
  var x =
    ((x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)) /
    ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));
  var y =
    ((x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)) /
    ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4));
  return { x: x, y: y };
}


分割图片

       


let clipImg = images.clip(img, 0, 0, leftPageTopSideLength, img.height);
pts.add(new MatOfPoint(topLeftPoint, topRightPoint, bottomRightPoint, bottomLeftPoint, topLeftPoint));
Imgproc.fillPoly(polyMat, pts, Scalar(255), 1);
Core.bitwise_and(clipImg.mat, newPolyMat, newMat);


测试环境
手机: Mi 11 Pro
Android版本: 12
Autojs版本: 9.1.10


名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途



相关文章
|
8月前
|
人工智能 搜索推荐
StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
【2月更文挑战第17天】StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
130 2
StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
|
6月前
|
存储 编解码 算法
LabVIEW如何实现多张图拼接
LabVIEW如何实现多张图拼接
101 0
|
8月前
|
Python
图片拼接 --全景图合成
图片拼接 --全景图合成
|
8月前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
162 0
使用ffmpeg拼接两张图片
最近在工作中遇到了一个需求,就是需要将两张图片拼接在一起,作为一个封面图。如果只是临时拼接一张,我们可以只用photoshop之类的图片编辑工具,将两张图片拼接在一起。而我们的需要是需要实现自动化,由于之前使用过ffmpeg做过图片的操作,于是搜索了下,ffmpeg确实能实现两张图片的拼接,这里分享下相关操作的命令行。
174 0
|
文字识别
【数图大作业】基于模板匹配的文字识别(二)(文字行列分割)
【数图大作业】基于模板匹配的文字识别(二)(文字行列分割)
【数图大作业】基于模板匹配的文字识别(二)(文字行列分割)
|
机器学习/深度学习 编解码 计算机视觉
两张照片就能转视频!Google提出FLIM帧插值模型
两张照片就能转视频!Google提出FLIM帧插值模型
235 0
|
算法 Java API
利用java实现视频人像分割及视频背景替换
视频人像分割是将视频中的人体从原视频中分割出来,得到透明背景的人体视频。如何基于算法分割后的人像结果进行再加工。
724 0
利用java实现视频人像分割及视频背景替换
|
编解码 Android开发 计算机视觉
autojs查找轮廓相似的图片
autojs查找轮廓相似的图片
435 0
|
计算机视觉 Python
实现人脸截图保存并编写128维特征向量
## 前情提要 通过[上一篇](https://developer.aliyun.com/article/868130?spm=a2c6h.26396819.0.0.6e513e18zineFN)我们就可以对图片中的人脸进行识别,这篇文章就来教大家怎么对人脸部分进行截取保存。并且将图片中的每张人脸编码成一个128维长度的向量,通过这个后续能在人脸之间进行比对。
631 0