(11条消息) C++opencv图像裁剪、等比例放大缩小
描述
C++使用opencv时,对imshow图像进行的常见处理,包括图像剪裁、等比例压缩等(待继续补充)
代码
1. 剪裁
int matrix_size = 3000;
cv::Mat image(matrix_size, matrix_size, CV_8UC3, cv::Scalar(255, 255, 255)); // 原图
cv::Mat image_part = image(cv::Rect(1400,1100,1000,1800)); // 裁剪后的图
cv::imshow("part of original image", image_part);
cv::waitKey(5);
代码中
cv::Rect
是opencv画的矩形,四个参数分别为矩形(左上角的column值,左上角的row值,矩形column方向上的宽,矩形row方向上的宽)
2. 等比例缩小
int matrix_size = 3000;
cv::Mat image(matrix_size, matrix_size, CV_8UC3, cv::Scalar(255, 255, 255)); // 原图
cv::Mat image_mini; // 等比例缩小图
resize(image, image_mini, cv::Size(matrix_size/3, matrix_size/3)); // 缩小操作
cv::imshow("mini of original image", image_mini);
cv::waitKey(5);
3. 等比例放大
int matrix_size = 3000;
cv::Mat image(matrix_size, matrix_size, CV_8UC3, cv::Scalar(255, 255, 255)); // 原图
cv::Mat image_max; // 等比例放大图
resize(image, image_max, Size(matrix_size * 2, matrix_size * 2)); // 放大操作
cv::imshow("max of original image", image_max);
cv::waitKey(5);
resize()函数的参数
void cv::resize (InputArray src,
OutputArray dst,
Size dsize,
double fx = 0,
double fy = 0,
int interpolation = INTER_LINEAR
参数含义
src(必填): 原图像
dst(必填): 变换后的图像
dsize(必填): 写法
cv::Size(col, row)
,变换后的图像尺寸fx 和 fy(自由选填): 缩放系数,1为不变,<1缩小,>1放大。如果 Size 被设置的话,则根据 Size 做缩放插值;如果没写Size,需要根据 fx 和 fy 做缩放插值。
以下两种写法一致resize(image, image_mini, cv::Size(image.cols/2, image.rows)); resize(image, image_mini, cv::Size(), 0.5, 1);
interpolation(自由选填): 插值算法,自行去研究,不填写就是默认为0, 也就是最近点插值INTER_NEAREST
赞 (0)