OpenCV IOS调整垫子的大小

OpenCV IOS Resize a Mat

本文关键字:IOS 调整 OpenCV      更新时间:2023-10-16

我正在尝试动态调整垫子的大小,我正在将其叠加到另一个图像上。图像存储在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,因为它们是矩阵。

使用它工作:

cv::resize(*overlay, destination, cv::Size(), 0.5, 0.5);

如果其他人遇到这个问题,你可以去:)