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
Предложение для сценария принять также не идеальные квадраты?