2016-10-21 25 views
0

Я использую алгоритм MSER с opencv и нахожу некоторые части прямоугольника , тогда я хочу размыть это внутри прямоугольника. мои renctangles являются векторными, как (x, y, ширина, высота), но с использованием расширенного или подрывного ввода inputarray src. Как я могу преобразовать вектор в inputarray src?C++ размытие прямоугольника части изображения

вот мой код.

vector< vector< Point> > contours; 
vector< Rect> bboxes; 
Rect MserROI; 
Ptr< MSER> mser = MSER::create(21, (int)(0.00002*textImg.cols*textImg.rows), (int)(0.05*textImg.cols*textImg.rows), 1, 0.7); 
mser->detectRegions(textImg, contours, bboxes); 

for (int i = 0; i < bboxes.size(); i++) 
{ 
    cout << bboxes[i] << '\n'; 
    rectangle(inImg, bboxes[i], CV_RGB(0, 0, 0)); 
    MserROI = bboxes[i]; 
    dilate(MserROI, Mser_dil, Mat(), Point(-1, -1), 2) //error 
} 

ответ

0

Я полагаю, что вы хотите размыть часть изображения внутри прямоугольника. Если это так, то вам нужно исправить то, как вы декларируете рентабельность инвестиций.

Если «inImg» является Mat, то вы можете объявить ROI следующим образом:

for (int i = 0; i < bboxes.size(); i++) 
{ 
    rectangle(inImg, bboxes[i], CV_RGB(0, 0, 0)); 
    Mat MserROIimg=inImg(bboxes[i]);   
    dilate(MserROI, Mser_dil, Mat(), Point(-1, -1), 2) //error 
} 

В вашем коде, вы не упомянули, где вы объявили Mser_dil, но если ваша ошибка, относящиеся к декларации ROI, тогда это должно сработать для вас

+0

спасибо @Saransh Kejrowal – plzunderstandmyenglish