C++ opencv有没有类似Matlab中图片点乘、点除的函数?

如果没有,应该怎样实现这样的过程?希望有代码示意一下。谢谢

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)。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-26
可用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 );

然后把两个矩阵点乘。没在程序上试过,不太确定啊

本回答被提问者采纳

C++ opencv有没有类似Matlab中图片点乘、点除的函数?
或用cvCreateImage、cvCvtColor两函数实现图像的灰度化。2、matlab中的zeros函数相当于OpenCV中的cvSetZero函数。3、matlab中的两矩阵点乘 .* 相当于OpenCV中的cvMul函数。4、matlab中的两矩阵点除 .\/ 相当于OpenCV中的cvDiv函数。5、matlab中的两矩阵相加 + 相当于OpenCV中的cvAdd函数。6、matlab中的...

opencv中有几个函数不懂是什么意思
57、cvMax:在两个数组中进行元素级的取最大值操作;58、cvMaxS:在一个数组和一个标量中进行元素级的取最大值操作;59、cvMerge:把几个单通道图像合并为一个多通道图像;60、cvMin:在两个数组中进行元素级的取最小值操作;61、cvMinS:在一个数组和一个标量中进行元素级的取最小值操作;62、cvMinMaxLoc:寻找数组...

如何通俗的理解图像处理中常见的去卷积(反卷积 or deconvolution)?
反卷积的基本原理就是把图像转换到频率域,通过估算图像的核函数,在频率域对图像点乘计算之后,重新获取图像信息,转回为空间域。主要操作都在频率域,转换通过离散傅里叶(DFT)变换与反变换,通过维纳滤波处理获取反模糊信息,OpenCV支持反卷积采用维纳滤波方式的去模糊,但是参数调整事一个大坑,基本上每...

如何匹配图像中两个四边形,使得其各边距离相等 csdn
2、Lowe的C++代码中使用的是欧氏距离,但是在matlab代码中为了加速计算,使用的是向量夹角来近似欧氏距离:先将128维SIFT特征向量归一化为单位向量(每个数除以平方和的平方根),然后点乘来得到向量夹角的余弦值,最后利用反余弦(acos函数)求取向量夹角。实验证明Lowe的办法正确率和耗时都很不错。同样,...

opencv中有几个函数不懂是什么意思
回答:1、cvLoadImage:将图像文件加载至内存; 2、cvNamedWindow:在屏幕上创建一个窗口; 3、cvShowImage:在一个已创建好的窗口中显示图像; 4、cvWaitKey:使程序暂停,等待用户触发一个按键操作; 5、cvReleaseImage:释放图像文件所分配的内存; 6、cvDestroyWindow:销毁显示图像文件的窗口; 7、cvCreateFileCapture:...

sift特征点匹配怎么去除不好的特征点
检测子和描述子的常用提取方法有:sift,harris,surf,fast,agast,brisk,freak,brisk,brief\/orb等。3、匹配:通过各个角点的描述子来判断它们在两张图像中的对应关系,常用方法如 flann等。4、消噪:去除错误匹配的外点,保留正确的匹配点。常用方法有KDTREE,BBF,Ransac,GTM等。二、SIFT匹配方法...

相似回答