学习opencv.js(1)图像入门

article/2025/10/26 4:24:08

目标:了解如何阅读图像以及如何在网络中显示它。

读取图像:OpenCV.js 将图像保存为cv.Mat类型。我们使用 HTML 画布元素将cv.Mat传输到网络或反向传输。ImageData 接口可以表示或设置画布元素区域的底层像素数据。

1.从画布创建一个 ImageData对象

let canvas = document.getElementById(canvasInputId);
let ctx = canvas.getContext('2d');
let imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);

2.使用 cv.matFromImageData 构造一个cv.Mat

let src = cv.matFromImageData(imgData);

note:因为canvas只支持连续存储的8位RGBA图像,所以cv.Mat类型为cv.CV_8UC4。它与原生 OpenCV 不同,因为原生imreadimshow返回和显示的图像具有按 BGR 顺序存储的通道。

显示图像:

1.首先将src的类型转换为cv.CV_8UC4

let dst = new cv.Mat();
// scale and shift are used to map the data to [0, 255].
src.convertTo(dst, cv.CV_8U, scale, shift);
// *** is GRAY, RGB, or RGBA, according to src.channels() is 1, 3 or 4.
cv.cvtColor(dst, dst, cv.COLOR_***2RGBA);

2.从 dst 新建一个 ImageData 

let imgData = new ImageData(new Uint8ClampedArray(dst.data, dst.cols, dst.rows);

3.显示它

let canvas = document.getElementById(canvasOutputId);
let ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height);
canvas.width = imgData.width;
canvas.height = imgData.height;
ctx.putImageData(imgData, 0, 0);

在 OpenCV.js 中

Parameters参数

imageSourcecanvas element or id, or img element or id.

Returns返回

具有以 RGBA 顺序存储的通道的垫子(mat)。

我们使用cv.imshow (canvasSource, mat)来显示它。该函数可以根据垫子(mat)的深度缩放垫子(scale the mat):

  • 如果 mat 是 8 位无符号的,则按原样显示。
  • 如果 mat 是 16 位无符号或 32 位整数,则像素除以 256。即取值范围 [0,255*256] 映射到 [0,255]。
  • 如果 mat 是 32 位浮点,则像素值乘以 255。即值范围 [0,1] 映射到 [0,255]。

参数

canvasSourcecanvas element or id.
matmat to be shown.

上面的图像读取和显示代码可以简化如下:

let img = cv.imread(imageSource);
cv.imshow(canvasOutput, img);
img.delete();
核心代码:
let src = cv.imread('canvasInput');
let dst = new cv.Mat();
// To distinguish the input and output, we graying the image.
// You can try different conversions.
cv.cvtColor(src, dst, cv.COLOR_RGBA2GRAY);
cv.imshow('canvasOutput', dst);
src.delete();
dst.delete();

完整代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello OpenCV.js</title>
</head>
<body>
<h2>Hello OpenCV.js</h2>
<p id="status">OpenCV.js is loading...</p>
<div><div class="inputoutput"><img id="imageSrc" alt="No Image" /><div class="caption">imageSrc <input type="file" id="fileInput" name="file" /></div></div><div class="inputoutput"><canvas id="canvasOutput" ></canvas><div class="caption">canvasOutput</div></div>
</div>
<script type="text/javascript">
let imgElement = document.getElementById('imageSrc');
let inputElement = document.getElementById('fileInput');
inputElement.addEventListener('change', (e) => {imgElement.src = URL.createObjectURL(e.target.files[0]);
}, false);
imgElement.onload = function() {let src = cv.imread(imgElement);let dst = new cv.Mat();// To distinguish the input and output, we graying the image.// You can try different conversions.cv.cvtColor(src, dst, cv.COLOR_RGBA2GRAY);cv.imshow('canvasOutput', dst);src.delete();dst.delete();
};
function onOpenCvReady() {document.getElementById('status').innerHTML = 'OpenCV.js is ready.';
}
</script>
<script async src="opencv.js" onload="onOpenCvReady();" type="text/javascript"></script>
</body>
</html>

结果:

 


http://chatgpt.dhexx.cn/article/cyJoEO9v.shtml

相关文章

学习OpenCV3:MinGW编译OpenCV到vs_version.rc.obj处出错

1. 错误描述 [ 65% ] Building RC object modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj gcc: error: long: No such file or directory C:\Mingw-w64\mingw32\bin\windres.exe: preprocessing failed. mingw32-make[2]: *** [modules\world\CMakeFiles\opencv…

【从零学习OpenCV 4】opencv_contrib扩展模块的安装

本文首发于“小白学视觉”微信公众号&#xff0c;欢迎关注公众号 本文作者为小白&#xff0c;版权归人民邮电出版社所有&#xff0c;禁止转载&#xff0c;侵权必究&#xff01; 经过几个月的努力&#xff0c;小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。…

如何学习opencv源码

如何学习opencv源码 当你在使用opencv时&#xff0c;看到一个函数有没有想去了解他的源码&#xff0c;而又无从下手?这里我将带你脱离这种尴尬的境遇&#xff01; 面对这个问题&#xff0c;我自己也查找过许多的资料&#xff0c;网上有这样一种做法&#xff0c;步骤如下&…

从零开始学习opencv——在虚拟环境下安装opencv环境

毕设准备做cv相关项目&#xff0c;今天开始学习cv基础知识&#xff0c;课程为B站“【不要再看那些过时的OpenCV老教程了】2022巨献&#xff0c;OpenCV零基础小白最新版全套教程(人工智能机器视觉教程)” 0.自行安装python3.7,注意版本不能过高或过低&#xff0c;注意安装64位版…

【学习OpenCV4】OpenCV入门精讲(C++/Python双语教学)

大家好&#xff0c;我在CSDN开的OpenCV课程已经开课了&#xff0c;入口如下&#xff1a; OpenCV入门精讲&#xff08;C/Python双语教学&#xff09; 课程开始快一周了&#xff0c;收到了广大同学们的欢迎。 &#xff08;1&#xff09;评分很高&#xff1b; &#xff08;2&#…

opencv 深度学习

深度学习简史 深度学习很早就被提出&#xff0c;但一直停滞不前2011&#xff0c;微软在语言识别上使用&#xff0c;取得了突破2012&#xff0c;DNN在图像识别领域取得了惊人的效果&#xff0c;在ImageNet评测的错误率从26%降到了15%2016&#xff0c;AlphaGo击败人类&#xff0…

【学习OpenCV4】案例3:OpenCV Python语言开发环境搭建

本书分享内容来自图书学习OpenCV 4&#xff1a;基于Python的算法实战》&#xff0c;该书刚刚上市&#xff0c;是国内第一本系统讲解OpenCV4各个模块的图书&#xff0c;配套案例深入浅出的讲解。第一章有在各个平台搭建环境的介绍&#xff0c;后面每个章节都有对模块的导读、模块…

在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置

在pycharm中学习opencv图像处理 安装python下载python安装包开始安装 安装pycharm社区版下载pycharm安装包开始安装 启动pycharm创建第一个项目创建第一个项目设置项目存放路径首次运行python程序下载opencv-python库、添加解释器配置 开始图像处理的学习&#xff01;打开下载好…

【从零学习OpenCV 4】Windows系统中安装OpenCV 4

本文首发于“小白学视觉”微信公众号&#xff0c;欢迎关注公众号 本文作者为小白&#xff0c;版权归人民邮电出版社所有&#xff0c;禁止转载&#xff0c;侵权必究&#xff01; 经过几个月的努力&#xff0c;小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。…

【从零学习OpenCV 4】了解OpenCV的模块架构

本文首发于“小白学视觉”微信公众号&#xff0c;欢迎关注公众号 本文作者为小白&#xff0c;版权归人民邮电出版社所有&#xff0c;禁止转载&#xff0c;侵权必究&#xff01; 经过几个月的努力&#xff0c;小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。…

OpenCV入门基础学习

目录 一&#xff1a;OpenCV简介 二&#xff1a;OpenCV图像处理 图像 三&#xff1a;OpenCV图像处理 图像模式 四&#xff1a;OpenCV图像识别 图片操作 五&#xff1a;OpenCV图像处理 Mat类 六&#xff1a;OpenCV图像处理 图片 像素 七&#xff1a;OpenCV图像…

如何学习opencv

本文授权转载自贾老师的微信公众号"OpenCV学堂"。更多信息可扫描文末二维码关注公众号&#xff08;知乎已将二维码转换成链接&#xff0c;可自动跳转到微信&#xff09;。 一&#xff1a;学习OpenCV三个阶段 人工智能带火了计算机视觉的人才需求&#xff0c;作为计算…

学习opencv3 pdf_【资源分享】有哪些学习openCV的网站或书籍?

点击上方"蓝色小字"关注我呀 请让我再水一篇文扩充一下我的资源分享专栏吧,跟大家分享一些opencv的书籍和网站。书籍 先给大家贴个图: 大部分是我到处搜集来的,还有一些是花钱在某鱼上买来的,今天把下载链接分享给大家(如果失效了可以加我微信备注【视觉电子书】…

开始学习OpenCV

Mark 一下&#xff0c;今天开始学习OpenCV。 希望能够从事图像处理开发的工作。 第一次肯定是安装开发环境。 软件选择的是VS2017 C 和 opencv 4.5.1版本。 VS2017安装教程&#xff1a;vs2017安装和使用教程&#xff08;详细&#xff09;_悲恋花丶无心之人的博客-CSDN博客_vs2…

OpenCV教程:超详细的OpenCV入门教程,值得收藏

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了很多函数&#xff0c;这些函数非常高效地实现了计算机视觉算法&#xff08;最基本的滤波到高级的物体检测皆有涵盖&#xff09;。 OpenCV 使用 C/C 开发&#…

8.2 OpenCV简介

OpenCV简介 学习目标 了解OpenCV是什么 能够独立安装OpenCV 1 什么是OpenCV 1.1 OpenCV简介 OpenCV是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库&#xff0c;支持与计算机视觉和机器学习相关的众多算法&#xff0c;并且正在日益扩展。 Ope…

OpenCV怎么学?OpenCV入门到底要学多久?

首先先了解OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在linux、Windows、Android和MAC OS操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、…

【OpenCV学习】(四)图形绘制

【OpenCV学习】&#xff08;四&#xff09;图形绘制 背景 使用OpenCV进行图形绘制是一种必备的技能&#xff0c;在图像的任务中&#xff0c;不管是图像检测还是图像识别&#xff0c;我们都需要通过绘制图形和绘制文字对处理的结果进行说明&#xff0c;本篇就详细介绍下图形的…

通过opencv制作人脸识别的窗口,这也太疯狂了

@Author:Runsen 文章目录 使用Haar级联进行人脸检测Haar级联结合摄像头使用SSD的人脸检测SSD结合摄像头的人脸检测人脸检测,看似要使用深度学习,觉得很高大牛逼,其实通过opencv就可以制作人脸识别的窗口。 今天,Runsen教大家将构建一个简单的Python脚本来处理图像中的人脸…

opencv(人脸检测和识别)

Opencv的人脸检测函数&#xff0c;定义了具体可跟踪对象类型的数据文件。 Haar级联分类器&#xff0c;通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配。 两个图像的相似程度可以通过它们对应特征的欧式距离来度量。距离可能以空间坐标或颜色坐标来定义。…