【问题标题】:How to crop image using eye points in opencv? [closed]如何在opencv中使用眼点裁剪图像? [关闭]
【发布时间】:2016-04-30 08:12:47
【问题描述】:
  • 我有一张带有眼睛和眼睛周围的点的图像。例如 10 分。现在我想裁剪那个眼睛部分。
  • 但我不知道该怎么做。
    请给我一个想法。

【问题讨论】:

  • 与任何一组点相同。边界矩形,然后裁剪到该矩形

标签: c++ opencv


【解决方案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);

【讨论】:

  • 我已经在 QList 中存储了点数。
  • 差不多。查看修改后的代码。
  • @865719.Do you know hot to convert QPointF to Point?
  • @SagarPatel:复制xy 真的很简单。例如cv::Point newPoint(qPoint.x(), qPoint.y());
  • @SagarPatel 如果我发布的内容解决了您的问题,请考虑将其标记为解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多