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