OpenCV(未完)

Mat

Mat类详解

构造函数

Mat()
Mat(long addr)
Mat(int rows,int cols,int type)
  • rows : 行数
  • cols :列数
  • type:类型。CV_8UC1,CV_64FC4 等。
Mat(int rows, int cols, int type, ByteBuffer data)
  • data:直接使用 data进行存储,不创建新的。
    • ByteBuffer:缓冲区
Mat(Size size, int type)
  • size:设置了高和宽的类类型。
    • Size(double width, double height) 以及 Size(Point p) ,是一个具有x,y坐标的点
    • public Point(double x, double y)
Mat(int rows, int cols, int type, Scalar s)
  • s:将所有的矩阵元素初始化为值 s。其值可以是 1-4个数字,或者是一个长度不大于4的数组。
    • Scalar(double v0, double v1, double v2, double v3)
    • Scalar(double v0, double v1, double v2)
    • Scalar(double v0, double v1)
    • Scalar(double v0)
    • Scalar(double[] vals)
Mat(Size size, int type, Scalar s)
Mat(Mat m, Range rowRange, Range colRange)
  • rowRange:矩阵m的行的范围
  • colRange:矩阵m的列的范围
Mat(Mat m, Range rowRange)
Mat(Mat m, Rect roi)

创建的新图像为m 的一部分,具体的范围 roi 指定,此构造函数也不进行图像数据的复制操作,新图像与m共用图像数据。

  • roi:指定范围。

Method

Mat adjustROI(int dtop, int dbottom, int dleft, int dright)

在父矩阵中调整子矩阵的大小和位置

void assignTo(Mat m, int type)
int channels()

返回矩阵通道的数量。灰度图是单通道 channels=1,RGB是3通道 channels=3

int checkVector(int elemChannels, int depth, boolean requireContinuous)
int checkVector(int elemChannels, int depth)
int checkVector(int elemChannels)
Mat clone()

返回一个克隆的Mat对象

Mat col(int x)
Mat row(int x)
Mat colRange(int startcol, int endcol)
void convertTo(Mat m, int rtype)

将一个数组转换成另一种具有可选比例的数据类型

void copyTo(Mat m)

将矩阵复制到另一个矩阵,clone()方法内部是用了这个实现的。

  • m:目的地矩阵
void create(int rows, int cols, int type)

该方法可以创建矩阵,但不能设置矩阵的初始值。

Mat cross(Mat m)

计算3元素向量的一个向量积

  • m:另一个向量积的对象
long dataAddr()
int depth()

返回一个矩阵元素的深度。对应关系:{CV_8U=0,CV_8S=1,CV_16U=2,CV_16S=3,CV_32S=4,CV_32F=5,CV_64F=6}。

可以理解为房间里的每张床可以睡多少人,跟房间有多少张床没有关系。

Mat diag(int d)

取对角线上的值,空构造则 d = 0;

例子:
[1,2,3       
 4,5,6
 7,8,9] 
 如果参数 d=0 , 那么结果是[1;5;9]
 如果参数 d>0 , 那么结果是[2,6]
 如果参数 d<0 , 那么结果是[4,8]
int dims()

返回矩阵维数。Mat本身就是一个矩阵,一般是2维

double dot(Mat m)
long elemSize()

计算单个像素点所占的字节数(与通道数有关)

long elemSize1()

计算depth所占的字节数(与通道数无关)

boolean empty()

如果没有元素数组返回true

Imgproc

void Canny(Mat image, Mat edges, double threshold1, double threshold2,L2gradient = false )
  • image:8位输入图像
  • edges:输出边缘地图;单通道8位图像,其大小与图像相同
  • threshold1:低阀值
  • threshold2:高阀值
  • L2gradient = false

Canny推荐的 高:低 阀值比在 2:1 到 3:1之间。边缘检测原理:边缘就是灰度值变化较大的地方。

http://opencv-java-tutorials.readthedocs.io/en/latest/

https://blog.csdn.net/m1109048058/article/details/76640714

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值