专栏简介 | ||
💒个人主页 📰专栏目录 点击上方查看更多内容 |
📖心灵鸡汤📖 我们唯一拥有的就是今天,唯一能把握的也是今天 建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 |
🧭文章导航🧭 ⬆️ 4.Mat之创建、复制 ⬇️ 6.Mat之局部区域读写及Range和Rect介绍 |
一、像素操作
1.设置像素
只列举部分常用函数的用法。
这里简单说明下掩码(mask)
:
1.mask是一个与矩阵相同大小的矩阵,用于指定哪些位置需要设置值。
2.mask矩阵中的元素可以是0或者非0,如果mask中对应位置的值是非0,则对应位置的值会被设置为value;如果mask中对应位置的值是0,则对应位置的值不会被改变。
mask拓展说明:从前景背景的角度来说的话,0可以表示背景,非0表示前景,转换下思维理解为修改对应前景部分的像素值。
1.put
将指定位置的像素值替换为指定的数据。此函数返回值为替换元素的个数(关于更多相关内容可以观看视频)
1.我们这里就列举两个方法,其它方法比较容易理解,就不再举例了
1.
put(int[] idx, byte[] data, int offset, int length) |
idx | 指定像素的位置,使用int数组表示,例如idx = {row, col}表示第row行第col列的像素 |
data | 要替换的像素数据,使用byte数组表示(不同的data类型,对应着不同的数据类型(CvType)) |
offset | 一个整数,表示从字节数组中的哪个位置开始替换元素。(整数向左,负数向右,不没有数据时,默认元素值补0) |
length | 一个整数,表示要替换的元素的数量 |
//使用put(int[] idx, byte[] data, int offset, int length)
Mat ones = Mat.ones(new Size(5, 5), CvType.CV_8UC1);
System.out.println("设置前 = \n" + ones.dump());
//设置坐标
int[] idx