2015-10-20 69 views
1
  • 我有一個眼睛和眼睛周圍的圖像。例如10分。現在我想裁剪那個眼睛的一部分。
  • 但我不知道我該怎麼做。
    請給我一個想法。
+1

和你一樣會爲任何點的集合。邊界矩形,然後裁剪到該矩形 – user3791372

回答

1

我建議你找到你要裁剪各地點「邊框」。然後,您可以使用this method裁剪圖像。

下面是一個示例代碼,應該給你一個想法在做什麼:

// let's assume that you stored your 10 points in a QList 
QList<QpointF> points; 
// fill in "points"... 
// generate a "bounding box" by finding the min/max in the x and y directions 
const auto compareX = [] (const QpointF& p1, const QpointF& p2) { 
    return p1.x() < p2.x(); 
}; 
const auto compareY = [] (const QpointF& p1, const QpointF& p2) { 
    return p1.y() < p2.y(); 
}; 
const auto pMinX = std::min_element(points.begin(), points.end(), compareX); 
const auto pMaxX = std::max_element(points.begin(), points.end(), compareX); 
const auto pMinY = std::min_element(points.begin(), points.end(), compareY); 
const auto pMaxY = std::max_element(points.begin(), points.end(), compareY); 
cv::Rect boundingBox(pMinX->x(), 
        pMinY->y(), 
        pMaxX->x() - pMinX->x(), 
        pMaxY->y() - pMinY->y()); 
// get a view on the sub-image 
cv::Mat croppedImage = originalImage(boundingBox); 
+0

我已經將點存儲在QList 中。 –

+0

這是一回事。查看編輯後的代碼。 – 865719

+0

@ 865719.你知道很熱將QPointF轉換爲Point嗎? –