框出傾斜的正方形,並拷貝正方形內容 |
尚未結案
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
1. 先求出方形的重心(中心點),旋轉樞紐中心。
2. 參考圖形旋轉的範例。
依照所求出的差異角度,為選轉角度。
如:
PY := Trunc(2*(y-Centery) 1);
for X:=0 to Width-1 do
begin
px :=Trunc(2*(x-CenterX) 1);
fx :=(((px*cAngle-py*sAngle)-1)/ 2 Centerx) - xDiff;
fy :=(((px*sAngle py*cAngle)-1)/ 2 Centery) - yDiff;
.....
詳細去找個 BCB 的範例,就很清楚了。 斟酌參考看看吧!
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
smilebye 您好: 因著您的提問,覺得這個問題可以應用在某些我感興趣的題目上,所以我實作了部分的功能,順便與您分享。
相關推導,實際影像與螢幕座標的關係,您可參考程式碼。 程式的使用說明如下:
1.利用滑鼠在影像上任點兩點您感興趣的所在。因為我設定的規則是採逆時針方式給定選取點的位置,因此點選的順序不同會畫出不同方向的圖形。
2.按下 rotate 按鈕即可得到轉換後的結果。 程式連結如下:
http://delphi.ktop.com.tw/loadfile.php?TOPICID=21371966&CC=477974 程式中選用了華視主播王欣怡小姐的照片,由於此照片中正好王主播的頭向右偏了一下,此處僅為影像處理而使用,特此說明與致謝!
RichTop 敬上 =====*****
把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題!
=====#####
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
RichTop 你好:
我想請問一下取中心點的函式getCenter() 中心點的xy座標爲什麼這樣取?看很久想不通還有scale代表什麼意思?
void getBlockImage(TCanvas *canvas, TImage *image, TPointf pc, int size, float angle) { float sx, sy, cx, cy, cosine, sine; int imgW, imgH; imgW = image->Picture->Width; imgH = image->Picture->Height; cx = pc.x; cy = pc.y; cosine = cos(angle*Deg2Rad); sine = sin(angle*Deg2Rad); for (int y=-size; y<=size; y ) { for (int x=-size; x<=size; x ) { sx = cx (x*cosine - y*sine ); sy = cy (x*sine y*cosine); sy = imgH - sy; if ( sx<0 || sx>=imgW || sy<0 || sy>=imgH ) canvas->Pixels[size x][size-y] = RGB(255,0,0); else canvas->Pixels[size x][size-y] = image->Picture->Bitmap->Canvas->Pixels[sx][sy]; } } }還有這邊拷貝到新圖,紅色部份的索引值在新圖中不是[0][0]開始填嗎? 怎變成[0][2*size] 大家好: 關於程式設計~我有很多不懂之處,請大家多幫忙唷^^ ~謝謝~
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
smilebye 您好: 1.中心點的求算:
2.scale的作用是當如果要找眼睛連線下 scale*d 處的中心點時使用的。
所以以您的例子,scale=1。
3.因為是將找到的中心點當成正方形的中心點,以便利用相對位置的座標算出轉換回影像pixel所在的位置,這樣才能正確找到每一點對應到影像的顏色值。
由於螢幕座標與真正圖形像素的位置,並不全等,所以需要位移與翻轉(y方向)。
試著將x,y的邊界值代入,應該比較能了解我的說法。 這是我的思考習慣,或許還有其他的表示法,您參考一下。 RichTop 敬上 =====*****
把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題!
=====##### 發表人 - richtop 於 2005/04/05 15:38:50
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
RichTop你好:
引言: 2.scale的作用是當如果要找眼睛連線下 scale*d 處的中心點時使用的。 所以以您的例子,scale=1。 3.因為是將找到的中心點當成正方形的中心點,以便利用相對位置的座標算出轉換回影像pixel所在的位置,這樣才能正確找到每一點對應到影像的顏色值。 由於螢幕座標與真正圖形像素的位置,並不全等,所以需要位移與翻轉(y方向)請問一下中心點指的是正方形中心嗎?如果是的話scale的作用是當如果要找眼睛連線下 scale*d 處的中心點那scale怎麼不是0.5? 關於3.中, 是不是就是從正方形的左下角開始一次一列 由下scan到上?所以將剪下來的圖片秀在canvas上時, 座標才會是由下往上填(y從2size,2size-1,,,,0)? 還有size指的就是兩眼連線的歐氏距離嗎? 謝謝大家不嫌麻煩地幫忙~ 大家好: 關於程式設計~我有很多不懂之處,請大家多幫忙唷^^ ~謝謝~
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |