在C++中使用OpenCV裁剪图像非常简单,你可以使用
cv::Rect
类定义一个矩形区域,然后使用
cv::Mat
的
operator()
运算符来提取该区域的像素值。
下面是一个简单的例子,演示如何从原始图像中裁剪一个矩形区域:
#include <opencv2/opencv.hpp>
int main()
// 读取图像
cv::Mat image = cv::imread("test.jpg");
// 定义裁剪区域
cv::Rect roi(100, 100, 200, 200);
// 提取裁剪区域的像素值
cv::Mat cropped = image(roi);
// 显示裁剪后的图像
cv::imshow("cropped", cropped);
cv::waitKey(0);
return 0;
在上面的例子中,cv::Rect
的构造函数接受四个参数,分别是矩形区域的左上角坐标和宽度、高度。cv::Mat
的operator()
运算符也可以接受一个cv::Rect
对象作为参数,表示提取该矩形区域的像素值。
值得注意的是,如果裁剪区域超出了图像的边界,程序可能会崩溃或者提取错误的像素值,因此在实际应用中需要进行边界检查或者使用合适的异常处理方法。