【OpenCV 基础知识 22】扩展边界并填充

CopyMakeBorder
复制图像并且制作边界。(处理边界卷积)

函数定义如下:

void cvCopyMakeBorder( const CvArr* src, CvArr*dst, CvPoint offset, int bordertype, CvScalar value=cvScalarAll(0) );
  • src:输入图像。

  • dst:输出图像。

  • offset: 输入图像(或者其 ROI)欲拷贝到的输出图像长方形的左上角坐标(或者左下角坐标,如果以左下角为原点)。长方形的尺寸要和原图像的尺寸的 ROI 分之一匹配。

  • bordertype: 已拷贝的原图像长方形的边界的类型: IPL_BORDER_CONSTANT - 填充边界为固定值,值由函数最后一个参数指定。 IPL_BORDER_REPLICATE - 边界用上下行或者左右列来复制填充。(其他两种IPL 边界类型, IPL_BORDER_REFLECT 和 IPL_BORDER_WRAP 现已不支持)。

  • value: 如果边界类型为IPL_BORDER_CONSTANT 的话,那么此为边界像素的值。 函数 cvCopyMakeBorder 拷贝输入二维阵列到输出阵列的内部并且在拷贝区域的周围制作一个指定类型的边界。函数可以用来模拟和嵌入在指定算法实现中的边界不同的类型。例如:和opencv 中大多数其他滤波函数一样,一些形态学函数内部使用复制边界类型,但是用户可能需要零边界或者填充为 1 或 255 的边界。

program cv_CopyMakeBorder;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,
  ocv.highgui_c,
  ocv.core_c,
  ocv.core.types_c,
  ocv.imgproc_c,
  uResourcePaths;

const
  filename = cResourceMedia + 'opencv_logo_with_text.png';

var
  image: pIplImage = nil;
  dst: pIplImage = nil;
  dst2: pIplImage = nil;

begin
  try

    image := cvLoadImage(filename, 1);
    WriteLn(Format('[i] image: %s', [filename]));

    dst := cvCreateImage(cvSize(image^.width + 20, image^.height + 20), image^.depth, image^.nChannels);
    dst2 := cvCreateImage(cvSize(image^.width + 20, image^.height + 20), image^.depth, image^.nChannels);


    cvNamedWindow('original', CV_WINDOW_AUTOSIZE);
    cvNamedWindow('IPL_BORDER_CONSTANT', CV_WINDOW_AUTOSIZE);
    cvNamedWindow('IPL_BORDER_REPLICATE', CV_WINDOW_AUTOSIZE);


    cvCopyMakeBorder(image, dst, cvPoint(10, 10), IPL_BORDER_CONSTANT, cvScalar(250));
    cvCopyMakeBorder(image, dst2, cvPoint(10, 10), IPL_BORDER_REPLICATE, cvScalar(250));


    cvShowImage('original', image);
    cvShowImage('IPL_BORDER_CONSTANT', dst);
    cvShowImage('IPL_BORDER_REPLICATE', dst2);


    cvWaitKey(0);


    cvReleaseImage(&image);
    cvReleaseImage(&dst);
    cvReleaseImage(&dst2);

    cvDestroyAllWindows();
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;

end.

相关推荐

  1. OpenCV 基础知识 22扩展边界填充

    2024-06-18 22:10:03       32 阅读
  2. OpenCV 基础知识 3】边缘检测

    2024-06-18 22:10:03       33 阅读
  3. opencv-python库 cv2边界填充&resize图片

    2024-06-18 22:10:03       36 阅读
  4. OpenCV 基础知识 21】霍夫变换圆形检测

    2024-06-18 22:10:03       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 22:10:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 22:10:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 22:10:03       87 阅读
  4. Python语言-面向对象

    2024-06-18 22:10:03       97 阅读

热门阅读

  1. 05-5.5.1 哈夫曼树

    2024-06-18 22:10:03       29 阅读
  2. 01-GIt

    01-GIt

    2024-06-18 22:10:03      27 阅读
  3. 部署YUM仓库及NFS共享服务

    2024-06-18 22:10:03       26 阅读
  4. Linux CFS 调度器 (1):概述

    2024-06-18 22:10:03       28 阅读
  5. 语言中 函数用地址传参的好处

    2024-06-18 22:10:03       35 阅读
  6. CSS中几种常用的清除浮动的方法

    2024-06-18 22:10:03       24 阅读
  7. BootStrap

    2024-06-18 22:10:03       29 阅读
  8. 我与华为的缘分

    2024-06-18 22:10:03       26 阅读
  9. 系统架构师面试题

    2024-06-18 22:10:03       30 阅读