可以任何一個解釋我的邏輯背後的代碼??邏輯後面的代碼
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
可以任何一個解釋我的邏輯背後的代碼??邏輯後面的代碼
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
它看起來像a
和b
是被用來在一個方向(向內或向外),並在相反的方向移動pt2
pt1
閾值。
也許他們正在用來增加/減少邊界檢查的矩形區域?
他們將它改爲笛卡爾,然後他們添加了* 1000,類似的東西,行 (i = 0; i < MIN(lines-> total,100); i ++) float * line =(float *)cvGetSeqElem(lines,i); float rho = line [0]; float theta = line [1]; CvPoint pt1,pt2; double a = cos(theta),b = sin(theta); double x0 = a * rho,y0 = b * rho; pt1.x = cvRound(x0 + 1000 *( - b)); pt1.y = cvRound(y0 + 1000 *(a)); pt2.x = cvRound(x0-1000 *( - b)); pt2.y = cvRound(y0 - 1000 *(a)); } – paddu 2010-07-08 15:44:56
您有一個由x0, y0
定義的點。您現在正在創建另外兩個點對象,一個位於(-b*1000, a*1000)
,另一個位於相對於原始點的(b*1000, -a*1000)
。據推測,1000
是爲了解決規模問題,因爲值a
和b
與點x0, y0
的點不同。
嗨,謝謝,它來自hough行opencv代碼,你能解釋清楚嗎 – paddu 2010-07-08 15:40:15
他們改變它爲笛卡爾,然後他們增加了一個* 1000,像這樣的東西,行數(i = 0; i < MIN(lines-> total,100 ); i ++){float * line =(float *)cvGetSeqElem(lines,i); float rho = line [0]; float theta = line [1]; CvPoint pt1,pt2;雙a = cos(theta),b = sin(theta); double x0 = a * rho,y0 = b * rho; pt1.x = cvRound(x0 + 1000 *( - b)); pt1.y = cvRound(y0 + 1000 *(a)); pt2.x = cvRound(x0 - 1000 *( - b)); pt2.y = cvRound(y0 - 1000 *(a)); } – paddu 2010-07-08 15:45:32
請幫我理清代碼背後的邏輯 – paddu 2010-07-08 15:46:42
如果您將代碼格式化爲代碼,我們將能夠更好地爲您提供幫助。找出問題和答案頁上文本框上方的小圖標是什麼,它們將豐富你的生活。 – 2010-07-08 15:19:14