OpenCV 3 - 如何正确提取cv :: Mat的ROI?

时间:2017-07-26 07:49:19

标签: ios opencv

我刚开始在iOS中使用openCV,我想从特定的cv :: Mat中提取ROI(感兴趣的区域)。

这是我目前的代码:

- (UIImage*)test {
    UIImage* img = [UIImage imageNamed:@"unnamed"];

    cv::Mat mat1;

    UIImageToMat(img, mat1);

    cv::Rect rect = cv::Rect(175, 219, 130, 50);
    cv::Mat mat2 = mat1(rect);

    return MatToUIImage(mat2);
}

然而,结果并不像我预期的那样:

这是原始图片,我想在其中提取底部文字: https://lh6.ggpht.com/JHYielbi8lDXKgE5h5PSifTqbMKCo8Pc4w3VixR3VB5eedUTIxJE5fco7oHZp294zn4=h900

结果如下:

enter image description here

我对OpenCV绝对不熟悉,所以我不知道是什么导致了这一点。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我使用下面的代码提取了ROI。但我不确定MatToUIImage(mat2);是否可行,也许您需要MatToUIImage(mat2.clone());

cv::Mat mat1 = imread("e:/test/rSfOy.jpg");
cv::Rect rect = cv::Rect(310, 420, 330, 110);
cv::Mat mat2 = mat1(rect);
imshow("rect", mat2);