学习OpenCV3---copyMakeBorder为图像创建边框

cv::copyMakeBorder函数通过不同的填充方法填充图像。

在这里插入图片描述

函数原型

CV_EXPORTS_W void copyMakeBorder(InputArray src, 
								 OutputArray dst,
                                 int top, 
                                 int bottom, 
                                 int left, 
                                 int right,
                                 int borderType, 
                                 const Scalar& value = Scalar() );

src:输入图像
dst:输出图像
top:图像上方的大小
bottom:图像下发的大小
left:图像左边的大小
right:图像右边的大小
borderType:填充的方法选择
value :固定大小

表:cv::copyMakeBorder中的borderType填充方法类型

边框类型 效果
cv::BORDER_CONSTANT 复制指定的常量扩展边界
cv::BORDER_REPLICATE 复制边缘的像素扩展边界
cv::BORDER_REFLECT 复制镜像扩展边界
cv::BORDER_WRAP 复制对边的像素扩展边界
cv::BORDER_REFLECT_101 复制镜像扩展边界,边界像素除外

代码:

    cv::Mat str1 = cv::imread("C:\\Users\\chuan\\Desktop\\picture\\22.jpg"), str2;

    int top = 0, bottom = 0, left = 0, right = 0, borderType = cv::BORDER_CONSTANT;

    cv::namedWindow("test", cv::WINDOW_AUTOSIZE);
    cv::createTrackbar("top", "test", &top, 100);
    cv::createTrackbar("bottom", "test", &bottom, 100);
    cv::createTrackbar("left", "test", &left, 100);
    cv::createTrackbar("right", "test", &right, 100);
    cv::createTrackbar("borderType", "test", &borderType, 4);
    for(;;)
    {
    
    
        cv::copyMakeBorder(str1, str2, top, bottom, left, right, borderType);
        cv::imshow("test", str2);
        if(cv::waitKey(100) == 27)
            break;
    }

猜你喜欢

转载自blog.csdn.net/qq_42401265/article/details/107758145