看板 C_and_CPP 關於我們 聯絡資訊
IplImage * countImg = cvCreateImage(cvGetSize(pFrame), 8, 1); cvCmp( pFrame, pBkImg, countImg, CV_CMP_EQ ); CvScalar count = cvCountNonZero( countImg ); if( cout.val[0] > Height*Width/4 ) { printf("diff"); } //---- done ---- ※ 引述《EterneLilac (Eterne)》之銘言: : int H,W,DIFF=0,a,b; : CvScalar Scalar1; : CvScalar Scalar2; : for(H = 0;H<Height;H++) : { : for(W = 0;W<Width;W++) : { : Scalar1 = cvGet2D(pFrame,W,H); : Scalar2 = cvGet2D(pBkImg,W,H); : if(Scalar1 != Scalar2) : { : DIFF++; : } : } : } : if(DIFF>Height*Width/4) : { : printf("diff"); : } : 上面是我的片段程式碼,pFrame跟pBkImg是兩張圖片, : 我想將它們寫成迴圈一個點一個點來比對他們的顏色差, : 當總和誤差大於25%的時候就輸出 diff, : 但是CvScalar是個矩陣,不能直接寫!=來判斷, : error C2678: binary '!=' : no operator defined which takes a left-hand : operand of type 'struct CvScalar' (or there is no acceptable conversion) : 我測試的時候他都顯示上面這個錯誤, : 想請問改才能將矩陣變成一純量來比較, : 又或者有其他方式能比對圖片? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.94.123
funman:在if那個地方是count吧 10/05 23:49
jvicpp:眼睛好利! 10/10 01:12