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;
}