qt获取图像的每个像素rgb_canvas 基础之图像处理

本文介绍了在QT中使用canvas进行图像处理的基础知识,包括获取图像像素数据的API,展示了如何实现底片效果、单色效果、灰度图、二值图和高斯模糊等图像处理技术,并提供了相应的算法和效果展示。
摘要由CSDN通过智能技术生成

前些日子,前辈推荐了一个有趣的项目 —— Real-Time-Person-Removal,这个项目使用了 TensorFlow.js,以及 canvas 中的图像处理实现视频中的人物消失。借此机会,复习下 canvas 基础中的图像处理。

基础 API

canvas 的图像处理能力通过 ImageData 对象来处理像素数据。主要的 API 如下:

  • createImageData():创建一个空白的 ImageData 对象
  • getImageData():获取画布像素数据,每一个像素点有 4 个值 —— rgba
  • putImageData():将像素数据写入画布
imageData = {  width: Number,  height: Number,  data: Uint8ClampedArray}复制代码

width 是 canvas 画布的宽或者说 x 轴的像素数量;height 是画布的高或者说 y 轴的像素数量;data 是画布的像素数据数组,总长度 w * h * 4,每 4 个值(rgba)代表一个像素。

对图片的处理

下面,我们通过几个例子来看下 canvas 基础的图片处理能力。 原图效果:

dec3275d14a78b3860492f2cfb5a61bd.png
const cvs = document.getElementById("canvas");const ctx = cvs.getContext("2d");const img = new Image();img.src="图片 URL";img.onload = function () {  ctx.drawImage(img, 0, 0, w, h);}复制代码

底片/负片效果

算法:将 255 与像素点的 rgb 的差,作为当前值。

function negative(x) {  let y = 255 - x;  return y;}复制代码

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值