簡體   English   中英

使用 opencv/c++ 將像素轉換為 mm --> 兩點之間的距離

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM