有时我需要将一些Matlab代码转换为OpenCV。
通常情况下,OpenCV中都有相应的函数可以实现,但是有时候很难找到它们。
因此,我想开始总结一些Matlab和OpenCV之间的对应关系。
我将以Matlab函数为标题,并附上Matlab帮助中的描述。接着,欢迎提供一个OpenCV示例或解决方案链接。
有时我需要将一些Matlab代码转换为OpenCV。
通常情况下,OpenCV中都有相应的函数可以实现,但是有时候很难找到它们。
因此,我想开始总结一些Matlab和OpenCV之间的对应关系。
我将以Matlab函数为标题,并附上Matlab帮助中的描述。接着,欢迎提供一个OpenCV示例或解决方案链接。
复制和平铺数组。B = repmat(A,M,N) 创建一个大矩阵B,由A的M×N平铺副本组成。B的大小为[size(A,1)*M, size(A,2)*N]。repmat(A,N)语句创建一个N×N平铺。
B = repeat(A, M, N)
查找非零元素的索引。I = find(X) 返回与数组X的非零条目相对应的线性索引。X可以是逻辑表达式。使用IND2SUB(SIZE(X),I)从线性索引I计算多个下标。
二维卷积。C = conv2(A, B) 对矩阵 A 和 B 进行二维卷积。如果 [ma,na] = size(A),[mb,nb] = size(B),且 [mc,nc] = size(C),则 mc = max([ma+mb-1,ma,mb]),nc = max([na+nb-1,na,nb])。
缩放数据并以图像形式显示。imagesc(...) 与 IMAGE(...) 相同,除了数据被缩放以使用完整的颜色映射。
多维图像的 N-D 滤波。B = imfilter(A,H) 使用多维滤波器 H 对多维数组 A 进行滤波。A 可以是逻辑型或任何类和维度的非稀疏数值数组。结果 B 的大小和类与 A 相同。
区域最大值。BW = imregionalmax(I) 计算 I 的区域最大值。imregionalmax 返回一个二进制图像 BW,大小与 I 相同,它标识了 I 中区域最大值的位置。在 BW 中,被设置为 1 的像素标识区域最大值;其他所有像素都被设置为 0。
2-D 顺序统计滤波。B=ordfilt2(A,ORDER,DOMAIN) 将 A 中的每个元素替换为由 DOMAIN 中的非零元素指定的邻居集合中排序后的第 ORDER 个元素。
选择多边形感兴趣区域。使用roipoly在图像中选择一个多边形感兴趣区域。roipoly返回一个二进制图像,您可以将其用作掩膜进行遮罩过滤。
近似梯度。[FX,FY] = gradient(F)返回矩阵F的数值梯度。FX对应于dF / dx,即水平方向x的差异。FY对应于dF / dy,即垂直方向y的差异。每个方向上点之间的间距被认为是1。当F是向量时,DF = gradient(F)是1-D梯度。
从多个下标计算线性索引。sub2ind用于确定与给定的一组下标值相对应的等效单个索引。
解决线性方程组A*x = B
。矩阵A和B必须具有相同的行数。