nodejs 环境下使用opencv处理图像(二)

4 篇文章 0 订阅

一、通道分离合并修改

//通道的分离与合并以及某个通道值的修改
const  {imread,imshow,waitKey,Mat,imwrite,COLOR_RGB2GRAY,COLOR_BGR2GRAY, COLOR_BGR2HSV,COLOR_RGB2YUV,
    COLOR_RGB2YCrCb,Vec,CV_8UC1} =require('opencv4nodejs')
//三通道分离形成单通道图片
const src  = imread("./imge/1.jpg")
 let [b,g,r] = src.split();
imshow("b",b)
imshow("g",g)
imshow("r",r)
imwrite('./rgb/b.png',b)
imwrite('./rgb/g.png',g)
imwrite('./rgb/r.png',r)
// console.log(src.splitChannels())
// console.log(b.getDataAsArray())
//修改某个通道的颜色
r = new Mat(r.rows, r.cols,CV_8UC1, 255);
r = r.setTo( 150,r);
//合并三色通道
const matRGB = new Mat([b, g,r]);
imshow("matRGB",matRGB)
waitKey()

二、图像运算

const  {imread,imshow,
    waitKey,Mat,
    imwrite,
    COLOR_RGB2GRAY,
    COLOR_BGR2GRAY, COLOR_BGR2HSV,COLOR_RGB2YUV,
    COLOR_RGB2YCrCb,Vec,CV_8UC1

} =require('opencv4nodejs')
// 像素的算术运算涉及加减乘除等基本运算(要进行算术运算,两张图片的形状(shape)必须一样)
//像素加法
const m1 = imread('./imge/liux.png')
const m2 = imread('./imge/windows.png')
//像素加法
const m4add = m1.add(m2)
imshow('m4add',m4add)
//像素减法
const m4sub = m1.sub(m2)
imshow('m4sub',m4sub)
//像素除法
 const m4div =m1.hDiv(m2)
imshow('m4div',m4div)
//像素乘法
const m4hMul =m1.hMul(m2)
imshow('m4hMul',m4hMul)
waitKey()

三、像素逻辑运算

const  {imread,imshow, waitKey} =require('opencv4nodejs')
// 像素的算术运算涉及加减乘除等基本运算(要进行算术运算,两张图片的形状(shape)必须一样)
//像素加法
const m1 = imread('./imge/liux.png')
const m2 = imread('./imge/windows.png')
//与运算  每个像素点每个通道的值按位与
const m4bitwiseAnd = m1.bitwiseAnd(m2)
imshow('m4bitwiseAnd',m4bitwiseAnd)
//#或运算   每个像素点每个通道的值按位或
const m4bitwiseOr = m1.bitwiseOr(m2)
imshow('m4bitwiseOr',m4bitwiseOr)
//#非运算   每个像素点每个通道的值按位取反
 const m4dbitwiseNot =m1.bitwiseNot(m2)
imshow('m4div',m4dbitwiseNot)
//异或运算
const m4bitwiseXor =m1.bitwiseXor(m2)
imshow('bitwiseXor',m4bitwiseXor)
waitKey()

四、调节图片的对比度和亮度

const  {imread,imshow, waitKey,Mat,addWeighted,CV_8UC3} =require('opencv4nodejs')
const src = imread('./imge/1.jpg')
imshow("first",src)
const {rows,cols,channels} = src;
const src2 = new Mat(rows,cols,CV_8UC3,[0,0,0]) 创建黑色的蒙版注意需要跟上面的图片shape相同
imshow("secondssss",src2)
const src3 = addWeighted(src,0.1,src2,0.9,10) 
imshow("second",src3)
waitKey()
help(addWeighted)可得到.addWeighted函数的官方解释。
函数addWeighted的原型:addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) -> dst
src1表示需要加权的第一个数组(上述例子就是图像矩阵)
alpha表示第一个数组的权重
src2表示第二个数组(和第一个数组必须大小类型相同)
beta表示第二个数组的权重
gamma表示一个加到权重总和上的标量值
即输出后的图片矩阵:dst = src1*alpha + src2*beta + gamma;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值