OpenCV извлекает область изображения из вектора квадратов

У меня есть изображение, которое содержит квадрат, и мне нужно извлечь область, содержащуюся в этом квадрате. После примененияsquares.c Сценарий (доступен в примерах каждого дистрибутива OpenCV) Я получаю вектор квадратов, затем мне нужно сохранить изображение для каждого из них.

Пользовательkarlphillip предложил это:

for (size_t x = 0; x < squares.size(); x++) 
{
    Rect roi(squares[x][0].x, squares[x][0].y, 
             squares[x][1].x - squares[x][0].x, 
             squares[x][3].y - squares[x][0].y);
    Mat subimage(image, roi);
}

для того, чтобы сгенерировать новый мат с именем subimage для всех квадратов, обнаруженных в исходном изображении

Как вспомнил Карл, точки, обнаруженные на изображении, могут не представлять идеальный квадрат (как вы можете видеть на рисунке выше), но код, который я только что предложил вам, предполагает, что они это делают.

На самом деле я получаю эту ошибку:

OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width &&
      roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height &&
      roi.y + roi.height <= m.rows) in Mat, file /usr/include/opencv/cxmat.hpp, 
      line 187

terminate called after throwing an instance of 'cv::Exception'
what():  /usr/include/opencv/cxmat.hpp:187: error: (-215) 0 <= roi.x && 
       0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y &&
       0 <= roi.height && roi.y + roi.height <= m.rows in function Mat

Aborted

Предложение для сценария принять также не идеальные квадраты?

Ответы на вопрос(1)

Ваш ответ на вопрос