OpenCV - получение части изображения - PullRequest
0 голосов
/ 26 марта 2019

Я хочу загрузить часть изображения в другое изображение. Есть несколько простых способов сделать это, но, например, cv::Mat OutImage = Image(cv::Rect(7,47,1912,980)), но полученное изображение слишком велико. Например:
Я получил изображение с разрешением 1920 x 1024 пикселей. Я хочу вырезать из него резюме: 7,47,1912,980. Я хотел бы предположить, что результирующее изображение имеет размер (1912-7 = 1905) х (980-47 = 933) пикселей, но оно имеет 1912х980. Кажется, что Opencv просто вырезает на правой нижней стороне и сохраняет левая верхняя область.

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

Есть идеи?

С уважением, Jan

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Это на самом деле cv:Rect(x,y,width,height), поэтому вы должны установить последние два параметра в качестве желаемой ширины и высоты вывода. Запомните установленный диапазон, иначе это приведет к ошибкам.

0 голосов
/ 26 марта 2019

Я также имел дело с этой проблемой, я просто приведу свой пример, он работает для меня хорошоВы также можете попробовать это.

 Rect const box(100, 295, 400, 185); //this mean the first corner is
                                      //(x,y)=(100,295)
                                     // and the second corner is
                                     //(x + b, y+c )= (100 +400,295+185)

 Mat ROI = frame(box);
...