Подизображение OpenCV из изображения Mat

Возможный дубликат:
Понимание области интересов в openCV 2.4

я хочу получить субизображение (ограниченное красной рамкой ниже) из изображения (формат Mat). Как мне это сделать?

введите описание изображения здесь

вот мой прогресс на данный момент:

include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;
int main()
{
Mat imgray, thresh;
vector<vector<Point> >contours;
vector<Point> cnt;
vector<Vec4i> hierarchy;
Point leftmost;

Mat im = imread("igoy1.jpg");
cvtColor(im, imgray, COLOR_BGR2GRAY);
threshold(imgray, thresh, 127, 255, 0);
findContours(thresh, contours, hierarchy, RETR_TREE,CHAIN_APPROX_SIMPLE);
}

11

Решение

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

int n=0;// Here you will need to define n differently (for instance pick the largest contour instead of the first one)
cv::Rect rect(contours[n]);
cv::Mat miniMat;
miniMat = imgray(rect);

Предупреждение: В этом случае miniMat — это субрегион imgray. Это означает, что если вы модифицируете первое, вы также измените второе. использование miniMat.copyTo(anotherMat) чтобы избежать этого.

Я надеюсь, что это помогло,
Удачи

25

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector