iOS openCV 获取掩码图中的最大矩形

直接上代码

+(CGRect)maximumRectBy:(UIImage *)image{
    cv::Mat srcImgMat;
    UIImageToMat(image, srcImgMat);
    
//    cv::Mat resultMat;
//    cv::pyrDown(srcImgMat, resultMat);
    
    cv::Mat gray;
    cv::cvtColor(srcImgMat, gray, CV_BGR2GRAY);
    
    // 进行二值化处理
    cv::Mat binary;
        // 用cv::threshold函数创建一个二值图像。常规阈值化模型(CV_THRESH_BINARY)下,
        // 所有大于指定阈值的像素赋值为预定的最大值(参数4),将其他像素赋值为0
        cv::threshold(gray, binary, // 输入/输出图像
            80,                     // 阈值(必须<256)
            255,                    // 最大值
            CV_THRESH_BINARY);
    
    std::vector contours;
    
    cv::Mat hierarchy;
    
    cv::findContours(binary, contours,hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
    
    int minX = 0,maxX = 0,minY = 0,maxY = 0;
    
    for(int i=0;i mX ? maxX : mX;
            minY = minY < my ? minY : my;
            maxY = maxY > mY ? maxY : mY;
        }
        
    }
    CGRect cgRect = CGRectMake(minX, minY, maxX-minX, maxY-minY);
    
    if(CGRectIsEmpty(cgRect)){
        return CGRectMake(0, 0, image.size.width, image.size.height);
    }
    
    return cgRect;
    
}

你可能感兴趣的:(iOS openCV 获取掩码图中的最大矩形)