c++提取图片ROI区域代码
时间: 2023-08-24 11:24:59 浏览: 201
以下是使用 OpenCV 库提取图片 ROI 区域的 C++ 代码示例:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
// 加载图片
cv::Mat img = cv::imread("image.jpg");
// 定义 ROI 区域
cv::Rect roi(50, 50, 100, 100); // 从 (50, 50) 开始,宽度和高度都是 100
// 提取 ROI 区域
cv::Mat roiImg = img(roi);
// 显示原始图片和 ROI 区域
cv::imshow("Original", img);
cv::imshow("ROI", roiImg);
cv::waitKey(0);
return 0;
}
```
上述代码中,`cv::imread()` 函数用于加载图片,`cv::Rect()` 函数用于定义 ROI 区域,`img(roi)` 表示从原始图片中提取 ROI 区域,最后使用 `cv::imshow()` 函数显示原始图片和 ROI 区域。
相关问题
c++提取图片ROI区域,其中ROI区域为圆形,代码实现
提取圆形 ROI 区域的方法可以先提取圆形的外接矩形,然后再提取矩形区域内的圆形区域。以下是使用 OpenCV 库提取圆形 ROI 区域的 C++ 代码示例:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
// 加载图片
cv::Mat img = cv::imread("image.jpg");
// 定义圆形 ROI 区域
cv::Point center(100, 100); // 圆心坐标
int radius = 50; // 半径
// 提取圆形外接矩形
cv::Rect rect(center.x - radius, center.y - radius, radius * 2, radius * 2);
// 提取圆形 ROI 区域
cv::Mat roiImg = cv::Mat::zeros(img.size(), CV_8UC3); // 创建一个全黑的 Mat
cv::Mat mask = cv::Mat::zeros(img.size(), CV_8UC1); // 创建一个全黑的掩膜
cv::circle(mask, center, radius, cv::Scalar(255, 255, 255), -1); // 在掩膜上画圆
img.copyTo(roiImg, mask); // 复制原始图片到全黑的 Mat 上,并只保留掩膜中的圆形区域
// 显示原始图片和 ROI 区域
cv::imshow("Original", img);
cv::imshow("ROI", roiImg);
cv::waitKey(0);
return 0;
}
```
上述代码中,首先定义圆心坐标和半径,然后提取圆形外接矩形。接着创建一个全黑的 Mat 对象 `roiImg` 和一个全黑的掩膜 `mask`,并在掩膜上画一个圆形。最后使用 `cv::copyTo()` 函数将原始图片复制到全黑的 Mat 上,并只保留掩膜中的圆形区域。
c++提取图片圆形区域内容
要提取图片的圆形区域内容,可以采用以下步骤:
1. 读取图片并获得其宽度和高度。
2. 创建一个圆形掩码(mask),其大小与图片相同。掩码中心为圆心,半径为圆的半径,圆内部设为1,圆外面设为0。
3. 将原始图像和掩码进行按位与(bitwise and)操作,得到圆形区域的图像内容。
以下是一段使用OpenCV库实现的C++代码示例:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv) {
// 读取图片
Mat image = imread("input.jpg");
int width = image.cols;
int height = image.rows;
// 设定圆形参数
Point center(width/2, height/2);
int radius = std::min(width, height)/2;
// 创建掩码
Mat mask(height, width, CV_8UC1);
mask.setTo(0);
circle(mask, center, radius, Scalar(255), -1);
// 对原始图像和掩码进行按位与操作
Mat result;
bitwise_and(image, mask, result);
// 显示结果
namedWindow("Original", WINDOW_AUTOSIZE);
imshow("Original", image);
namedWindow("Mask", WINDOW_AUTOSIZE);
imshow("Mask", mask);
namedWindow("Result", WINDOW_AUTOSIZE);
imshow("Result", result);
waitKey(0);
return 0;
}
```
请注意,此代码需要安装OpenCV库并将其包含在项目中。
阅读全文