Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

  • 应用基础

  • 专业领域

    • 服务端

    • 跨端技术

    • Web IDE

    • 中后台

    • 动效渲染

    • 可视化

      • 业务场景

      • 图像处理

        • opencv

          • 前端使用 opencv
          • 基础语法
            • 输入
              • 1. 从 canvas 中读取
              • 2.
            • 输出
              • 输出到 canvas 上
            • 预处理
              • 灰度
              • 二值化
            • 滤波
              • 双边滤波
              • 自定义滤波
            • 检测
              • 轮廓
          • 基于 opencv.js 实现图像内矩形物品的自动提取
      • 图表

    • 埋点监控

    • 多媒体

    • 桌面技术

    • 游戏互动

    • 编辑器

    • 虚拟化与容器化

    • 设计系统

  • 业务场景

  • 大前端
  • 专业领域
  • 可视化
  • 图像处理
  • opencv
gahing
2023-04-05
目录

基础语法草稿

# 输入

# 1. 从 canvas 中读取

const src = cv.imread("canvasInput");
1

# 2.

# 输出

# 输出到 canvas 上

cv.imshow("canvasOutput", grayImage);
1

# 预处理

# 灰度

const grayImage = new cv.Mat();
cv.cvtColor(src, grayImage, cv.COLOR_BGR2GRAY, 0);
1
2

# 二值化

const binaryImage = new cv.Mat();
// 128 阈值
cv.threshold(grayImage, binaryImage, 128, 255, cv.THRESH_BINARY);
1
2
3

# 滤波

# 双边滤波

let dst = new cv.Mat();
cv.cvtColor(src, src, cv.COLOR_RGBA2RGB, 0);
cv.bilateralFilter(src, dst, 9, 75, 75, cv.BORDER_DEFAULT);
1
2
3

# 自定义滤波

const M = cv.matFromArray(3, 3, cv.CV_32FC1, [0, -1, 0, -1, 5, -1, 0, -1, 0]);
cv.filter2D(src, dst, cv.CV_8U, M, new cv.Point(-1, -1), 0, cv.BORDER_DEFAULT);
1
2

# 检测

# 轮廓

https://blog.csdn.net/weixin_38346042/article/details/122601245

https://docs.opencv.org/3.4/dc/dcf/tutorial_js_contour_features.html

  1. 检测
let contours = new cv.MatVector();
let hierarchy = new cv.Mat();
cv.findContours(
  binaryImage,
  contours,
  hierarchy,
  cv.RETR_TREE,
  cv.CHAIN_APPROX_NONE
);
1
2
3
4
5
6
7
8
9
  1. 绘制
let dst = cv.Mat.zeros(src.rows, src.cols, cv.CV_8UC3);
let poly = new cv.MatVector();
// approximates each contour to polygon
for (let i = 0; i < contours.size(); ++i) {
  let tmp = new cv.Mat();
  let cnt = contours.get(i);
  // You can try more different parameters
  cv.approxPolyDP(cnt, tmp, 3, true);
  poly.push_back(tmp);
  cnt.delete();
  tmp.delete();
}
// draw contours with random Scalar
for (let i = 0; i < contours.size(); ++i) {
  let color = new cv.Scalar(
    Math.round(Math.random() * 255),
    Math.round(Math.random() * 255),
    Math.round(Math.random() * 255)
  );
  cv.drawContours(dst, poly, i, color, 1, 8, hierarchy, 0);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
编辑 (opens new window)
上次更新: 2025/06/11, 23:06:59
前端使用 opencv
基于 opencv.js 实现图像内矩形物品的自动提取

← 前端使用 opencv 基于 opencv.js 实现图像内矩形物品的自动提取→

最近更新
01
我的 2024 总结
12-31
02
浅谈代码质量与量化指标
08-27
03
快速理解 JS 装饰器
08-26
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式