[英]Convert pixels to mm with opencv/c++ --> Distance between two points
我有兩個點 p1(x1, y1) 和 p2(x2, y2)。 兩者都是二維平面圖中兩個圓的中心。 在用戶用智能手機拍攝的照片中會自動檢測到這兩個圓圈。
由於某些原因,我想測量 p1 和 p2 之間的距離(以米為單位)。
我完全不知道我該怎么做。 我確實看過 calib3D 模塊,但我認為我沒有發現任何有用的東西。
相機和圓圈之間的距離可能會有所不同,並且是恆定的,我認為這是我們可以關注的參數? 用於計算兩個中心的距離。
有沒有一種特殊的方法來做這樣的事情? 如果您有任何方法可以幫助我,我將不勝感激。
謝謝,祝你有美好的一天。
雨果
您需要使用增強現實工具包。 沒有什么能解決問題,除非你的問題有限制,使它比說的更簡單。
此類工具包可用於 Apple 和 Android 移動平台。
你自己嘗試實現增強現實的核心是沒有意義的。 對該理論的一些理解確實有助於使用工具包。
好吧,
以下是解決方案的步驟:
I) 首先做一個正交規划。
我需要兩個建立一個正交計划,我將在其中計算 2 個點之間的距離。
我需要知道以厘米為單位的距離,我有一張以像素為單位的圖片,所以我需要知道一個像素是多少厘米。
在我的例子中,圖片是 2498 x 1570 像素。 當我用尺子在紙上測量好的角落時:
2498 像素 = 18.2 厘米和 1570 像素 = 11.4 厘米。
通過這些數據,我們知道 1 px =~ 0.0073 厘米。 (18.2 / 2498 =~ 0.0073)。 (11.4 / 1570 =~ 0.0073)
II) 正交平面中的距離公式
double Operation::distanceBetween2Points(Point A, Point B){
double coeff = 0.0073;
double diffx = (B.x - A.x) * coeff;
double diffy = (B.y - A.y) * coeff;
return sqrt(pow(diffx, 2) + pow(diffy,2));
}
我發現與現實相符的距離等於 0.61005 厘米(= 0.6 厘米)。
我進行了幾次測試,它每次都有效,與現實相符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.