OpenCV for iOS 学习笔记(十四)—— 给图像添加边界



  • 处理效果

效果展示
  • 函数解析(copyMakeBorder

    void copyMakeBorder(InputArray src,   // 原图
                        OutputArray dst,  // 处理结果
                        int top,          // 上边界高
                        int bottom,       // 下边界高
                        int left,         // 左边界宽度
                        int right,        // 右边界宽度
                        int borderType,   // 边界类型
                        const Scalar& value = Scalar() ); // 填充边界像素
    
  • 源码

  • 源码片段
    需要用到的变量声明
    Mat src_CMB, dst_CMB; // 像素矩阵声明
    int top, bottom, left, right; // 边距声明
    int borderType; // 边界类型
    Scalar value; // 边界填充颜色
    RNG rng(12345); // 随机发生器
    获取图像
    UIImage *img = [UIImage imageNamed:@"6_S"];
    UIImageToMat(img, src_CMB);
    初始化参数
    /// 初始化输入参数
    top = (int)(0.3 * src_CMB.rows); // 上
    bottom = (int)(0.3 * src_CMB.rows); // 下
    left = (int)(0.3 * src_CMB.cols); // 左
    right = (int)(0.3 * src_CMB.cols); // 右

     borderType = BORDER_CONSTANT;  // 赋值图像类型(可common+左键查看API)
     
     value = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));  // 随机产生填充颜色
    

    载入边框
    copyMakeBorder(src_CMB, dst_CMB, top, bottom, left, right, borderType, value);
    UIImage *imge = MatToUIImage(dst_CMB); // 转换成UIImage对象
    创建了一个定时器,实现边框颜色的自动调整
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timer:) userInfo:nil repeats:YES];
    [timer fire];
    NSTimer Action
    - (void)timer:(NSTimer *)timer {
    // 计算颜色
    value = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
    // 加入边框
    copyMakeBorder(src_CMB, dst_CMB, top, bottom, left, right, borderType, value);
    _imageView.image = MatToUIImage(dst_CMB);
    }

  • 效果展示

效果展示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容