美文网首页SO 问题来了OpenCV
笔记《检测矩阵运算 》

笔记《检测矩阵运算 》

作者: 失忆的程序员 | 来源:发表于2017-08-10 10:08 被阅读5次

#pragma mark - -检测矩阵运算

- (void)check_Mat {

/*

double L11 = 42.5;

double L12 = 40.5;

double h11 = 1.3;

double h12 = h11 / 2;

NSMutableArray *realGoArray = [[NSMutableArray array] init];

for (int i = 0; i < 4; i++) {

MyPoint *tempPoint = [[MyPoint alloc] init];

if (i == 0) {

tempPoint.pointX = -h12;

tempPoint.pointY = -h12;

}

if (i == 1) {

tempPoint.pointX = L11 + h12;

tempPoint.pointY = -h12;

}

if (i == 2) {

tempPoint.pointX = L11 + h12;

tempPoint.pointY = L12 + h12;

}

if (i == 3) {

tempPoint.pointX = -h12;

tempPoint.pointY = h12 + h12;

}

[realGoArray addObject:tempPoint];

}

XPFLog(@" %lu ", (unsigned long)realGoArray.count);

for (int i = 0; i < realGoArray.count; i++) {

MyPoint *pp = realGoArray[i];

XPFLog(@"x = %f , y = %f", pp.pointX, pp.pointY);

}

*/

/*3 -1 4

1 0 0

2 1 -5*/

/*0 1 0

-5 23 -4

-1 5 -1 */

/*

//初始化矩阵

cv::Mat stdfMat = cv::Mat::zeros(3, 3, CV_64F);

cv::Mat stdInvMat = cv::Mat::zeros(3, 3, CV_64F);

// fuzhi

stdfMat.at(0, 0) = 3;

stdfMat.at(0, 1) = -1;

stdfMat.at(0, 2) = 4;

stdfMat.at(1, 0) = 1;

stdfMat.at(1, 1) = 0;

stdfMat.at(1, 2) = 0;

stdfMat.at(2, 0) = 2;

stdfMat.at(2, 1) = 1;

stdfMat.at(2, 2) = -5;

//矩阵求逆

stdInvMat = stdfMat.inv();

for (int i = 0; i < stdInvMat.rows; i++) {

XPFLog(@"%f%f%f", stdInvMat.at(i, 0), stdInvMat.at(i, 1), stdInvMat.at(i, 2));

}

XPFLog(@" ===== ");

//矩阵乘法

cv::Mat tempMat = stdfMat.mul(stdInvMat);//stdfMat * stdInvMat;

for (int j = 0; j < tempMat.rows; j++) {

XPFLog(@"%f%f%f", tempMat.at(j, 0), tempMat.at(j, 1), tempMat.at(j, 2));

}

XPFLog(@" ***** ");

//矩阵乘法

cv::Mat tempMat1 = cv::Mat(3, 3, CV_64F);

cv::gemm(stdfMat, stdInvMat, 1.0, cv::Mat::zeros(3, 3, CV_64F), 0.0, tempMat1);

//cv::multiply(stdfMat, stdInvMat, tempMat1);

for (int j = 0; j < tempMat1.rows; j++) {

XPFLog(@"%f%f%f", tempMat1.at(j, 0), tempMat1.at(j, 1), tempMat1.at(j, 2));

}

XPFLog(@" ===== ");

*/

/*

1 2 2

4 5 8

*/

/*

1 4

2 5

2 8

*/

/*

//转置矩阵

cv::Mat p1Mat = cv::Mat::zeros(2, 3, CV_64F);

p1Mat.at(0, 0) = 1;

p1Mat.at(0, 1) = 2;

p1Mat.at(0, 2) = 2;

p1Mat.at(1, 0) = 4;

p1Mat.at(1, 1) = 5;

p1Mat.at(1, 2) = 8;

cv::Mat p1TMat = p1Mat.t();

for (int j = 0; j < p1TMat.rows; j++) {

XPFLog(@"%f%f", p1TMat.at(j, 0), p1TMat.at(j, 1));//, p1TMat.at(j, 2));

}

*/

/* 1 1 1 2 2 2 */

/* 3 3 3 4 4 4 */

/* 3 3 3 8 8 8 */

/* 3 3 3 2 2 2 */

//矩阵乘

cv::MattempCornerMat =cv::Mat::zeros(2,3,CV_64F);

tempCornerMat.at(0,0) =1;

tempCornerMat.at(0,1) =1;

tempCornerMat.at(0,2) =1;

tempCornerMat.at(1,0) =2;

tempCornerMat.at(1,1) =2;

tempCornerMat.at(1,2) =2;

cv::MatB =cv::Mat::zeros(2,3,CV_64F);

B.at(0,0) =3;

B.at(0,1) =3;

B.at(0,2) =3;

B.at(1,0) =4;

B.at(1,1) =4;

B.at(1,2) =4;

//点乘.*

cv::MattestMulMat = tempCornerMat.mul(B);

cv::MattestDivMat =cv::Mat::zeros(2,3,CV_64F);

//点除./

cv::divide(B, tempCornerMat, testDivMat);

for(intk =0; k < testMulMat.rows; k++) {

XPFLog(@" %f%f%f ", testMulMat.at(k,0), testMulMat.at(k,1), testMulMat.at(k,2));

}

XPFLog(@" ******* ");

for(intm =0; m < testDivMat.rows; m++) {

XPFLog(@" %f%f%f ", testDivMat.at(m,0), testDivMat.at(m,1), testDivMat.at(m,2));

}

/*

cv::Mat eyeMat = cv::Mat::eye(3, 3, CV_64F);

//XPFLog(@"%@", eyeMat);

for (int i = 0; i < eyeMat.rows; i++) {

for (int j= 0; j< eyeMat.cols; j++) {

//XPFLog(@"%d ", eyeMat.at(i,j)[0]);

XPFLog(@"%f ", eyeMat.at(i,j));

}

XPFLog(@" == ");

}

XPFLog(@" ============= ");

eyeMat.at(1, 0) = 3.333;

eyeMat.at(2, 1) = 3.444;

eyeMat.at(0, 1) = 3.555;

for (int i = 0; i < eyeMat.rows; i++) {

for (int j= 0; j< eyeMat.cols; j++) {

//XPFLog(@"%d", eyeMat.at(i,j)[0]);

XPFLog(@"%f ", eyeMat.at(i,j));

}

XPFLog(@" =***= ");

}*/

/*

cv::Mat eyeMat = cv::Mat::eye(4, 4, CV_8UC1);

//XPFLog(@"%@", eyeMat);

for (int i = 0; i < eyeMat.rows; i++) {

for (int j= 0; j< eyeMat.cols; j++) {

//XPFLog(@"%d ", eyeMat.at(i,j)[0]);

XPFLog(@"%d ", eyeMat.at(i,j));

}

XPFLog(@" == ");

}

XPFLog(@" ============= ");

eyeMat.at(2,3) = 3;

for (int i = 0; i < eyeMat.rows; i++) {

for (int j= 0; j< eyeMat.cols; j++) {

//XPFLog(@"%d", eyeMat.at(i,j)[0]);

XPFLog(@"%d ", eyeMat.at(i,j));

}

XPFLog(@" =***= ");

}*/

相关文章

  • 笔记《检测矩阵运算 》

    #pragma mark - -检测矩阵运算 - (void)check_Mat { /*double L11 =...

  • IOS OpenCV Mat 像素运算

    #pragma mark - - 检测矩阵运算 cv::Mat eyeMat =cv::Mat::eye(4,4,...

  • Matrix与坐标转换

    1、矩阵的运算 1.1、矩阵的加减运算 比如矩阵A= B= 则A+B= 矩阵的加减运算,表示 运算性质 满足交换律...

  • matlab基础语法

    matlab中主要是矩阵运算 矩阵赋值 矩阵运算 控制流程 绘图

  • NumPy基础之矩阵的运算

    矩阵运算 矩阵运算包括矩阵的加法、减法、乘法(相乘与点乘)、矩阵的转置等,接下来详细讲解矩阵运算。 矩阵的加减法,...

  • 3.6 矩阵运算

    3.6.1 矩阵运算规则 矩阵的加减法运算规则与数组相同,即元素运算,其结果返回新的矩阵。倍乘数运算也是矩阵内元素...

  • 第三节矩阵运算

    1矩阵运算 2矩阵运算 3向量和矩阵的运算 4矩阵的逆 逆矩阵与原矩阵相乘得到单位矩阵,对角线全为1,其他元素为0...

  • Numpy中的矩阵运算+聚合操作+arg运算(2019.1.17

    Numpy中的矩阵运算 1.矩阵与数值之间的运算,矩阵与数值之间的算术运算,是矩阵里面的元素与数值进行运算 2.矩...

  • 认识Numpy—矩阵

    本节主要介绍如何创建矩阵、矩阵的四则运算、矩阵的转置、矩阵的逆、数组的比较及运算。

  • 【西瓜书】第10章 降维与度量学习

    这一章内容感觉有点难,涉及到很多关于矩阵运算的内容,书中对KNN的内容没有过多的描述,在笔记中先将矩阵运算的一些公...

网友评论

    本文标题:笔记《检测矩阵运算 》

    本文链接:https://www.haomeiwen.com/subject/kbwcrxtx.html