opencv3实现图像裁剪和图像填充(cv::copyMakeBorder)

在OpenCV3.1.0中,使用cv::copyMakeBorder进行图像边界填充以及cv::resize进行降采样,以实现图像裁剪的效果。虽然比MATLAB操作稍复杂,但提供了灵活的图像处理功能。注意,OpenCV3中的图像与Mat格式转换需特别处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MATLAB中小矩阵赋值到大矩阵的某一区域,很方便实现,换到opencv3.1.0版本下,稍微有些麻烦,把尝试的代码记录如下;

主要包括:

填充边界函数cv::copyMakeBorder(对应opencv2中的cvCopyMakeBorder

降采样cv::resize

可以借用到图像裁剪

注:opencv3中图像和Mat格式不能直接转,使用

    <span>	</span>src = cvLoadImage(im_path);
	cv::Mat src0 = cv::cvarrToMat(src);

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

cv::Mat im_crop0(cv::Mat img, cv::Rect rect)
{
	cv::Mat I = cv::Mat::zeros(rect.height, rect.width, 0);// 目标图像

	// 获取可填充图像
	int crop_x1 = cv::max(0,rect.x);
	int crop_y1 = cv::max(0,rect.y);
	int crop_x2 = cv::min(img.cols - 1, rect.x + rect.width - 1); // 图像范围 0到cols-1, 0到rows-1
	int crop_y2 = cv::min(img.rows - 1, rect.y + rect.height - 1);

	cv::Mat roi_img = img(cv::Ra
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值