科学网-邹兴文的博客-[转载]opencv矩阵元算
鏍忕洰鍒嗙被
87
/8
/5
/14
/9
/3
/9
鏈€鏂版棩蹇?/td>
/02-23
/02-22
/02-21
/02-21
/02-20
/02-20
/02-19
/02-10
/02-10
/02-09
/02-07
/02-05
/02-04
/02-04
/01-20
>
/5
/18
/5
/3
姝f枃
<<

瀛﹁€呴偣鍏存枃 鍙戣〃浜?010-2-23 11:58:14
锛? 鈹? 娴忚锛?8      

[杞浇]opencv鐭╅樀鍏冪畻

opencv鐭╅樀鍏冪畻

  • 缁艰堪:
    • OpenCV鏈夐拡瀵圭煩闃垫搷浣滅殑C璇█鍑芥暟. 璁稿鍏朵粬鏂规硶鎻愪緵浜嗘洿鍔犳柟渚跨殑C++鎺ュ彛锛屽叾鏁堢巼涓嶰penCV涓€鏍?
    • OpenCV灏嗗悜閲忎綔涓?缁寸煩闃靛鐞?
    • 鐭╅樀鎸夎瀛樺偍锛屾瘡琛屾湁4瀛楄妭鐨勬牎鏁?
  • 鍒嗛厤鐭╅樀绌洪棿:
    CvMat* cvCreateMat(int rows, int cols, int type);

    type: 鐭╅樀鍏冪礌绫诲瀷. 鏍煎紡涓篊V_<bit_depth>(S|U|F)C<number_of_channels>. 渚嬪: CV_8UC1 琛ㄧず8浣嶆棤绗﹀彿鍗曢€氶亾鐭╅樀, CV_32SC2琛ㄧず32浣嶆湁绗﹀彿鍙岄€氶亾鐭╅樀.
    渚嬬▼: CvMat* M = cvCreateMat(4,4,CV_32FC1);
  • 閲婃斁鐭╅樀绌洪棿:
    CvMat* M = cvCreateMat(4,4,CV_32FC1);
    cvReleaseMat(&M);
  • 澶嶅埗鐭╅樀:
    CvMat* M1 = cvCreateMat(4,4,CV_32FC1);
    CvMat* M2;
    M2=cvCloneMat(M1);
  • 鍒濆鍖栫煩闃?
    double a[] = { 1,   2,   3,   4,
    5, 6, 7, 8, 9, 10, 11, 12 };

    CvMat Ma=cvMat(3, 4, CV_64FC1, a);
    鍙︿竴绉嶆柟娉?
    CvMat Ma;
    cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a);
  • 鍒濆鍖栫煩闃典负鍗曚綅闃?
    CvMat* M = cvCreateMat(4,4,CV_32FC1);
    cvSetIdentity(M); // 杩欓噷浼间箮鏈夐棶棰橈紝涓嶆垚鍔?/pre>
        
  • 鍋囪闇€瑕佸瓨鍙栦竴涓?缁存诞鐐圭煩闃电殑绗?i,j)涓厓绱?
  • 闂存帴瀛樺彇鐭╅樀鍏冪礌:
  • cvmSet(M,i,j,2.0); // Set M(i,j)
    t = cvmGet(M,i,j); // Get M(i,j)
  • 鐩存帴瀛樺彇锛屽亣璁句娇鐢?-瀛楄妭鏍℃:
    CvMat* M     = cvCreateMat(4,4,CV_32FC1);
    int n        = M->cols;
    float *data = M->data.fl;
    data[i*n+j] = 3.0;
  • 鐩存帴瀛樺彇锛屾牎姝e瓧鑺備换鎰?
    CvMat* M     = cvCreateMat(4,4,CV_32FC1);
    int step = M->step/sizeof(float);
    float *data = M->data.fl;

    (data+i*step)[j] = 3.0;
  • 鐩存帴瀛樺彇涓€涓垵濮嬪寲鐨勭煩闃靛厓绱?
    double a[16];
    CvMat Ma = cvMat(3, 4, CV_64FC1, a);
    a[i*4+j] = 2.0; // Ma(i,j)=2.0;
  • 鐭╅樀-鐭╅樀鎿嶄綔:
    CvMat *Ma, *Mb, *Mc;
    cvAdd(Ma, Mb, Mc);       // Ma+Mb    -> Mc
    cvSub(Ma, Mb, Mc);       // Ma-Mb    -> Mc
    cvMatMul(Ma, Mb, Mc);    // Ma*Mb    -> Mc
  • 鎸夊厓绱犵殑鐭╅樀鎿嶄綔:
    CvMat *Ma, *Mb, *Mc;
    cvMul(Ma, Mb, Mc);       // Ma.*Mb   -> Mc
    cvDiv(Ma, Mb, Mc);       // Ma./Mb   -> Mc
    cvAddS(Ma, cvScalar(-10.0), Mc); // Ma.-10 -> Mc
  • 鍚戦噺涔樼Н:
    double va[] = {1, 2, 3};
    double vb[] = {0, 0, 1};
    double vc[3];
    CvMat Va=cvMat(3, 1, CV_64FC1, va); CvMat Vb=cvMat(3, 1, CV_64FC1, vb); CvMat Vc=cvMat(3, 1, CV_64FC1, vc);
    double res=cvDotProduct(&Va,&Vb); // 鐐逛箻: Va . Vb -> res cvCrossProduct(&Va, &Vb, &Vc); // 鍚戦噺绉? Va x Vb -> Vc end{verbatim}

    娉ㄦ剰 Va, Vb, Vc 鍦ㄥ悜閲忕Н涓悜閲忓厓绱犱釜鏁伴』鐩稿悓.

  • 鍗曠煩闃垫搷浣?
    CvMat *Ma, *Mb;
    cvTranspose(Ma, Mb);       // transpose(Ma) -> Mb (涓嶈兘瀵硅嚜韬繘琛岃浆缃?
    CvScalar t = cvTrace(Ma); // trace(Ma) -> t.val[0] 
    double d = cvDet(Ma);      // det(Ma) -> d
    cvInvert(Ma, Mb);          // inv(Ma) -> Mb 
  • 闈為綈娆$嚎鎬х郴缁熸眰瑙?
    CvMat* A   = cvCreateMat(3,3,CV_32FC1);
    CvMat* x   = cvCreateMat(3,1,CV_32FC1);
    CvMat* b   = cvCreateMat(3,1,CV_32FC1);
    cvSolve(&A, &b, &x);     // solve (Ax=b) for x 
  • 鐗瑰緛鍊煎垎鏋?閽堝瀵圭О鐭╅樀):
    CvMat* A   = cvCreateMat(3,3,CV_32FC1);
    CvMat* E   = cvCreateMat(3,3,CV_32FC1);
    CvMat* l   = cvCreateMat(3,1,CV_32FC1);
    cvEigenVV(&A, &E, &l);   // l = A鐨勭壒寰佸€?(闄嶅簭鎺掑垪)
    // E = 瀵瑰簲鐨勭壒寰佸悜閲?(姣忚)
  • 濂囧紓鍊煎垎瑙VD:
    CvMat* A   = cvCreateMat(3,3,CV_32FC1);
    CvMat* U   = cvCreateMat(3,3,CV_32FC1);
    CvMat* D   = cvCreateMat(3,3,CV_32FC1);
    CvMat* V   = cvCreateMat(3,3,CV_32FC1);
    cvSVD(A, D, U, V, CV_SVD_U_T|CV_SVD_V_T); // A = U D V^T

    鏍囧彿浣垮緱 U 鍜?V 杩斿洖鏃惰杞疆(鑻ユ病鏈夎浆缃爣鍙凤紝鍒欐湁闂涓嶆垚鍔?!!).

鑷?a href="http://hi.baidu.com/wmsunny/blog/item/f68877fb7854908f9f514654.html">http://hi.baidu.com/wmsunny/blog/item/f68877fb7854908f9f514654.html

鏈枃寮曠敤鍦板潃锛?
褰撳墠鎺ㄨ崘鏁帮細0    
鍙戣〃璇勮锛?/td>
鐢ㄦ埛鍚嶏細 蹇呭~
鐢靛瓙閭锛?/td>  
楠岃瘉鐮?/span>锛?input name="Right_content1$txtvalidate" type="text" id="Right_content1_txtvalidate" onfocus="javascript:document.getElementById('Image1').src='blogCode1.aspx?f=13&'+Math.random();document.getElementById('Image1').style.display=''" /> 鍒锋柊 
 
郑重声明:资讯 【科学网-邹兴文的博客-[转载]opencv矩阵元算】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——