c++ test_img(Range(400,800), Range(200,700))什么意思
时间: 2023-06-17 07:05:36 浏览: 86
这行代码是使用 OpenCV 库对图像进行裁剪的代码,其中:
- `test_img` 是待裁剪的图像对象;
- `Range(400,800)` 表示裁剪行的范围,从第 400 行到第 799 行(因为是左闭右开区间);
- `Range(200,700)` 表示裁剪列的范围,从第 200 列到第 699 列。
因此,这行代码的作用是将 `test_img` 中第 400 行到第 799 行,第 200 列到第 699 列的部分裁剪出来。
相关问题
c++ opencv 图片识别
要使用 C++ 和 OpenCV 进行图片识别,你需要安装 OpenCV 库并了解一些基本概念。以下是一个简单的示例程序,可以识别并在控制台上输出图片中的红色圆形:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读入图片
Mat img = imread("test.jpg");
// 转换为 HSV 格式
Mat hsv;
cvtColor(img, hsv, COLOR_BGR2HSV);
// 提取红色区域
Mat mask1, mask2;
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);
Mat mask = mask1 | mask2;
// 查找轮廓
vector<vector<Point>> contours;
findContours(mask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 遍历轮廓
for (size_t i = 0; i < contours.size(); i++) {
// 计算轮廓面积和周长
double area = contourArea(contours[i]);
double perimeter = arcLength(contours[i], true);
// 过滤掉非圆形轮廓
if (area > 1000 && perimeter > 100) {
double circularity = 4 * M_PI * area / (perimeter * perimeter);
if (circularity > 0.8) {
// 输出圆形信息
cout << "Red circle detected!" << endl;
}
}
}
return 0;
}
```
这个程序首先读入一张图片,然后将其转换为 HSV 格式。接着,使用 inRange 函数提取出红色区域,并使用 findContours 函数查找轮廓。最后,遍历所有轮廓,计算面积、周长和圆形度,判断是否为红色圆形。
opencv裁剪图片c++
要使用OpenCV裁剪图片,你可以使用以下代码示例中的任一方法:
1.
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
// 读取图片
Mat img = imread("test.jpg");
// 裁剪图片
Mat cropped_image = img(Range(400,1200), Range(350,700));
// 显示原始图片和裁剪后的图片
imshow("原始图片", img);
imshow("裁剪后的图片", cropped_image);
// 保存裁剪后的图片
imwrite("裁剪后的图片.jpg", cropped_image);
// 等待按键退出
waitKey(0);
// 销毁窗口
destroyAllWindows();
return 0;
}
```
2.
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
// 读取图片
cv::Mat img;
cv::Rect m_select;
img = imread("F://Visual Studio 2015//ROItest01//ROItest01//01.jpg");
// 显示原始图片
imshow("原图", img);
// 裁剪图片
m_select = Rect(0,0,111,217);
Mat ROI = img(m_select);
// 显示裁剪后的图片
#### 引用[.reference_title]
- *1* [opencv图像裁剪(C++)](https://blog.csdn.net/weixin_44487231/article/details/112849701)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)](https://blog.csdn.net/weixin_42010722/article/details/128183509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文