OpenCV IOS调整垫子大小

时间:2018-03-22 16:17:26

标签: c++ ios opencv image-processing opencv-mat

我正在尝试重新调整Mat的大小,我将其覆盖到另一个图像上。图像存储在Assets.xcassets文件夹中的IOS设备上,我将它传递给我的函数,然后使用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 个答案:

答案 0 :(得分:0)

让它正常使用:

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

如果有其他人遇到此问题,那么你去:)