看板 C_and_CPP 關於我們 聯絡資訊
各位前輩好 小弟最近要開發具有fitting點的功能(用於光斑偵測) 在這之前,必須先計算出該光斑內所有的點位置(假設光斑大小剛好涵蓋3*3個pixel,我 想取得包含光斑內共5*5個pixel的所有資料) 那麼假設我先在分析圖案上,用blob選定了一點(x1,y1) 該點的強度與位置能使用opencv的ptr獲取 那如果我想提取已該點為中心,向外擴展使用者自訂的n*n矩陣中,所有點的資訊 例如: 我在image上抓到一點O,該如何做才能自動獲得以O為中心 5*5的範圍內所有a點的x軸、y軸座標資訊呢? . . . . . . . . . . . . . . . . . a a a a a . . . a a a a a . . . a a O a a . . . a a a a a . . . a a a a a . . . . . . . . . . . . . . . . . . 可能問題有點白痴 我知道可以操控像是i+1、j-1等,將個別點存入[ ]中 但我一開始偵測到的點(例如O點)的資料型態是vector < vector < point > > 實在是不曉得該如何將週遭x與y的資料分開並抽出來 懇請板上高手指點迷津 謝謝>< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.86.158 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1654343686.A.8C2.html ※ 編輯: Vvvahc (223.141.86.158 臺灣), 06/04/2022 19:58:36
nh60211as: Mat(Rect) ?06/04 20:26
※ 編輯: Vvvahc (125.230.97.22 臺灣), 06/04/2022 20:35:05
Vvvahc: rect是以該點為左上角起點,分別向下及向右取範圍資料06/04 20:38
Vvvahc: 跟我預設該點為中心來取週圍值好像有點不一樣06/04 20:38
wulouise: input output 寫明確一點..06/04 20:57
Vvvahc: input :06/04 21:05
Vvvahc: vector<vector<point>> initial_point06/04 21:05
Vvvahc: 我希望output 可以導出initial_point06/04 21:05
Vvvahc: (例如上面的O點)週圍5*5的區域中,每個點的x值與y值06/04 21:05
Vvvahc: (會有2筆儲存資料,一筆是所有的x點位置,另一筆是所有y點06/04 21:05
Vvvahc: 位置)06/04 21:05
※ 編輯: Vvvahc (125.230.97.22 臺灣), 06/04/2022 21:33:25
LPH66: 所以輸入是表示什麼? 型態是點座標的二維陣列, 06/05 00:27
LPH66: 為什麼會是二維陣列? 它表示了什麼東西? 06/05 00:27
LPH66: 你抓到的「那一點 O」會怎麼出現在這個二維陣列中? 06/05 00:28
LPH66: 上面問的「寫明確一點」是要你去了解這些問題 06/05 00:29
LPH66: 不然連你都不知道你抓的東西怎麼表示了我們怎麼知道怎麼做? 06/05 00:29
LPH66: 那如果 (我的水晶球突然亮了) 這其實才是你的問題所在 06/05 00:30
LPH66: 那你應該要詳細地說你用 opencv 是怎麼寫去抓到的資料 06/05 00:31
LPH66: 只寫一個「用 ptr 獲取」我們哪知道你的 ptr 是什麼... 06/05 00:32
OnlyRD: 原po應該是不知道去哪找來兩段演算法程式,前段輸 06/05 04:42
OnlyRD: 出一個2維稀疏 06/05 04:42
OnlyRD: 的光斑矩陣,後段需要x,y兩軸各自紀錄一軸位置範圍 06/05 04:42
OnlyRD: 的陣列,然後 06/05 04:42
OnlyRD: 不想花心力看懂兩段算法跟他們的資料結構,所以連 06/05 04:42
OnlyRD: 問題都問不清楚 06/05 04:42
OnlyRD: 。 06/05 04:42
Vvvahc: 對 我使用opencv的findcontours(Mat intput_img, vector 06/05 11:42
Vvvahc: <vector<point>> contours,vector<Vec4i>hierarchy) 06/05 11:42
Vvvahc: 其中contours會儲存偵測到的點 06/05 11:45
Vvvahc: 但我不曉得該如何有效取出x、y的一維陣列資料 06/05 11:45
Vvvahc: 以及操作取得這點週圍所有點的一維資料 06/05 11:48
lycantrope: drawContours->dilate->mask 06/05 14:31
wulouise: 拜見樓上幾位通靈王<o> 06/05 15:32
Vvvahc: 抱歉 可能我是c++新手不曉得要怎麼實作功能出來,也表達 06/05 18:20
Vvvahc: 不夠清楚 06/05 18:20
Vvvahc: 如果可以的話,請至少告訴我資料型態為二維向量的點,該如 06/05 18:20
Vvvahc: 何有效率的獲取該點週圍共8個點的一維向量就好 06/05 18:20
LPH66: 那這就是你沒有搞清楚 opencv 是怎麼回傳它看到的東西了 06/05 22:17
LPH66: findContours 回給你的二維陣列, 第一維是各 contour 06/05 22:18
LPH66: 第二維是 contour 座標; 那你這裡就要想想到底 06/05 22:18
LPH66: findContours 是不是真的是你要的, 因為它是回傳 06/05 22:19
LPH66: 繞這一個 contour 四周的座標, 但你卻想要中心亮斑座標 06/05 22:19
LPH66: opencv 回給你邊界, 你想要的是中間, 那難怪你無從下手 06/05 22:20
LPH66: 你去問問你的同事或其他做過類似功能的人他們是用什麼函數 06/05 22:22
lycantrope: contour(輪廓),想要重心可以用cv::moments 06/06 09:29