C++ opencv有没有类似Matlab中图片点乘、点除的函数?
答案:2 悬赏:30
解决时间 2021-03-10 03:56
- 提问者网友:谁的错
- 2021-03-09 04:04
C++ opencv有没有类似Matlab中图片点乘、点除的函数?
最佳答案
- 二级知识专家网友:妄饮晩冬酒
- 2021-03-09 04:49
1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName,CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息保持了原有图像的信息(包括通道信息和位深信息);
rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;
或用cvCreateImage、cvCvtColor两函数实现图像的灰度化。
2、matlab中的zeros函数相当于OpenCV中的cvSetZero函数。
3、matlab中的两矩阵点乘 .* 相当于OpenCV中的cvMul函数。
4、matlab中的两矩阵点除 ./ 相当于OpenCV中的cvDiv函数。
5、matlab中的两矩阵相加 + 相当于OpenCV中的cvAdd函数。
6、matlab中的两矩阵相减 - 相当于OpenCV中的cvSub函数。
7、matlab中的矩阵和一个常量相加 A + a 相当于OpenCV中的cvAddS函数 cvAdds(matA, cvScalar(a), matB)。
8、matlab中的矩阵和一个常量相减 A - a 相当于OpenCV中的cvSubS函数 cvSubS(matA, cvScalar(a), matB)。
9、matlab中的给矩阵赋一初值 A(:, :) = a 相当于OpenCV中的cvSet函数 cvSet(matA, cvScalar(a))。
10、matlab中取矩阵某一部分赋给另一矩阵 A = B(i : j, m : n) 相当于OpenCV中的cvGetSubRect 函数,cvGetSubRect(mat1, mat2, rect)。
11、matlab中取矩阵最大值、最小值 max(max(A))、min(min(A)) 相当于OpenCV中的cvMinMaxLoc函数 cvMinMaxLoc(A, minloc, maxloc)。
12、matlab中两矩阵相乘 A * B 相当于OpenCV中的cvMatMul函数,cvMatMul(A, B, C)。
13、matlab中计算两个三维向量的叉积 C = cross(A, B) 相当于OpenCV中的cvCrossProduct函数,cvCrossProduct(A, B, C)。
14、matlab中计算向量的范数 c = norm(A) 相当于OpenCV中的cvNorm函数,c = cvNorm(A)。
15、matlab中求二维矩阵的奇异值分解 [u s v] = svd(A, 0) 相当于OpenCV中的cvSVD函数 cvSVD(A, s, u, v)。
16、matlab中两矩阵左除 c = a / b 相当于OpenCV中的cvInvert、cvMatMul两函数即:cvInvert(a, d); cvMatMul(d, b, c)。
17、matlab中的求矩阵的逆inv函数 A = inv(B) 相当于OpenCV中的cvInvert函数:cvInvert(B,A)。
rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;
或用cvCreateImage、cvCvtColor两函数实现图像的灰度化。
2、matlab中的zeros函数相当于OpenCV中的cvSetZero函数。
3、matlab中的两矩阵点乘 .* 相当于OpenCV中的cvMul函数。
4、matlab中的两矩阵点除 ./ 相当于OpenCV中的cvDiv函数。
5、matlab中的两矩阵相加 + 相当于OpenCV中的cvAdd函数。
6、matlab中的两矩阵相减 - 相当于OpenCV中的cvSub函数。
7、matlab中的矩阵和一个常量相加 A + a 相当于OpenCV中的cvAddS函数 cvAdds(matA, cvScalar(a), matB)。
8、matlab中的矩阵和一个常量相减 A - a 相当于OpenCV中的cvSubS函数 cvSubS(matA, cvScalar(a), matB)。
9、matlab中的给矩阵赋一初值 A(:, :) = a 相当于OpenCV中的cvSet函数 cvSet(matA, cvScalar(a))。
10、matlab中取矩阵某一部分赋给另一矩阵 A = B(i : j, m : n) 相当于OpenCV中的cvGetSubRect 函数,cvGetSubRect(mat1, mat2, rect)。
11、matlab中取矩阵最大值、最小值 max(max(A))、min(min(A)) 相当于OpenCV中的cvMinMaxLoc函数 cvMinMaxLoc(A, minloc, maxloc)。
12、matlab中两矩阵相乘 A * B 相当于OpenCV中的cvMatMul函数,cvMatMul(A, B, C)。
13、matlab中计算两个三维向量的叉积 C = cross(A, B) 相当于OpenCV中的cvCrossProduct函数,cvCrossProduct(A, B, C)。
14、matlab中计算向量的范数 c = norm(A) 相当于OpenCV中的cvNorm函数,c = cvNorm(A)。
15、matlab中求二维矩阵的奇异值分解 [u s v] = svd(A, 0) 相当于OpenCV中的cvSVD函数 cvSVD(A, s, u, v)。
16、matlab中两矩阵左除 c = a / b 相当于OpenCV中的cvInvert、cvMatMul两函数即:cvInvert(a, d); cvMatMul(d, b, c)。
17、matlab中的求矩阵的逆inv函数 A = inv(B) 相当于OpenCV中的cvInvert函数:cvInvert(B,A)。
全部回答
- 1楼网友:痴妹与他
- 2021-03-09 05:42
可用cvMul函数实现:
void cvMul(const CvArr* src1,const CvArr* src2,CvArr* dst,double scale=1);
点除是cvDiv函数。
望采纳!追答
追问:请问复数矩阵适用吗?图片是经傅里叶变换得到的 因此 每个像素对应一个复数。
追答:频谱的话可以试试cvMulSpectrums
追问:非常感谢,做除法的话有相应的函数吗?查了一下没查到,如果没有怎么把第二个矩阵求倒数呢?
追答:对第二个矩阵求逆,用cvInvert函数:
cvInvert( const CvArr* src, CvArr* dst, int method=CV_LU );
然后把两个矩阵点乘。没在程序上试过,不太确定啊
void cvMul(const CvArr* src1,const CvArr* src2,CvArr* dst,double scale=1);
点除是cvDiv函数。
望采纳!追答
追问:请问复数矩阵适用吗?图片是经傅里叶变换得到的 因此 每个像素对应一个复数。
追答:频谱的话可以试试cvMulSpectrums
追问:非常感谢,做除法的话有相应的函数吗?查了一下没查到,如果没有怎么把第二个矩阵求倒数呢?
追答:对第二个矩阵求逆,用cvInvert函数:
cvInvert( const CvArr* src, CvArr* dst, int method=CV_LU );
然后把两个矩阵点乘。没在程序上试过,不太确定啊
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯