OpenCV IOS изменить размер мата
Я пытаюсь изменить размер циновки на лету, которую я накладываю на другое изображение. Изображение хранится на устройстве IOS в папке Assets.xcassets, и я передаю его своей функции, а затем использую UIImageToMat для преобразования его в cv:: Mat.
В качестве теста я хочу иметь возможность изменить его размер, чтобы он был вдвое меньше, но я сталкиваюсь с проблемами.
Когда я пытался overlay->resize(overlay->rows/2);
Результат наложения просто показывает верхнюю половину того, что было.
Потом когда я попробовал cvResize(overlay, destPointer, CV_INTER_LINEAR);
Я получаю ошибку:
ошибка: (-5) Неизвестный тип массива в функции cvarrToMat
C++:
cv::Point center;
int radius;
double NewRadius;
cv::Mat originphoto;
UIImageToMat(overlay, originphoto, 1);
cv::Mat *overlay = &originphoto;
center.x = cv::saturate_cast<int>((r->x + r->width*0.5) - overlay->size().width*0.5);
center.y = cv::saturate_cast<int>((r->y + r->height*0.5 - overlay->size().height*0.5));
radius = cv::saturate_cast<int>((r->width + r->height) / 2);
printf("%d",radius);
NewRadius = radius/1;
cv::Mat destination(overlay->rows/2, overlay->cols/2, 1);
cv::Mat *destPointer = &destination;
cvResize(overlay, destPointer, CV_INTER_LINEAR);
overlay = destPointer;
Любая помощь здесь будет принята с благодарностью, все еще очень плохо знакомой с обработкой изображений и не уверенной, как обращаться с этими cv::Mats, так как они являются матрицами.
1 ответ
Получил работу, используя:
cv::resize(*overlay, destination, cv::Size(), 0.5, 0.5);
Если кто-то еще сталкивается с этой проблемой, то вы идете:)