Matlab到OpenCV的转换示例

13

有时我需要将一些Matlab代码转换为OpenCV。

通常情况下,OpenCV中都有相应的函数可以实现,但是有时候很难找到它们。

因此,我想开始总结一些Matlab和OpenCV之间的对应关系。

我将以Matlab函数为标题,并附上Matlab帮助中的描述。接着,欢迎提供一个OpenCV示例或解决方案链接。


嗯,看起来有答案但没有真正的问题。 - Bull
这就是为什么我将它制作成了一个社区维基。我认为把它放在这里作为一个问题/维基(可以被其他人搜索)比在其他地方发布更好。 - FSaccilotto
好的,我撤销了我的负评。 - Bull
1个回答

20

Repmat

复制和平铺数组。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)

OpenCV文档

Find

查找非零元素的索引。I = find(X) 返回与数组X的非零条目相对应的线性索引。X可以是逻辑表达式。使用IND2SUB(SIZE(X),I)从线性索引I计算多个下标。

类似于Matlab的find

Conv2

二维卷积。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])。

类似 Conv2

Imagesc

缩放数据并以图像形式显示。imagesc(...) 与 IMAGE(...) 相同,除了数据被缩放以使用完整的颜色映射。

SO Imagesc

Imfilter

多维图像的 N-D 滤波。B = imfilter(A,H) 使用多维滤波器 H 对多维数组 A 进行滤波。A 可以是逻辑型或任何类和维度的非稀疏数值数组。结果 B 的大小和类与 A 相同。

SO Imfilter

Imregionalmax

区域最大值。BW = imregionalmax(I) 计算 I 的区域最大值。imregionalmax 返回一个二进制图像 BW,大小与 I 相同,它标识了 I 中区域最大值的位置。在 BW 中,被设置为 1 的像素标识区域最大值;其他所有像素都被设置为 0。

SO Imregionalmax

Ordfilt2

2-D 顺序统计滤波。B=ordfilt2(A,ORDER,DOMAIN) 将 A 中的每个元素替换为由 DOMAIN 中的非零元素指定的邻居集合中排序后的第 ORDER 个元素。

SO Ordfilt2

Roipoly

选择多边形感兴趣区域。使用roipoly在图像中选择一个多边形感兴趣区域。roipoly返回一个二进制图像,您可以将其用作掩膜进行遮罩过滤。

SO Roipoly

梯度

近似梯度。[FX,FY] = gradient(F)返回矩阵F的数值梯度。FX对应于dF / dx,即水平方向x的差异。FY对应于dF / dy,即垂直方向y的差异。每个方向上点之间的间距被认为是1。当F是向量时,DF = gradient(F)是1-D梯度。

SO Gradient

Sub2Ind

从多个下标计算线性索引。sub2ind用于确定与给定的一组下标值相对应的等效单个索引。

SO sub2ind

反斜杠运算符或mldivide

解决线性方程组A*x = B。矩阵A和B必须具有相同的行数。

cv::solve


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接