opencv外接矩形代码
时间: 2023-04-02 14:04:15 浏览: 108
以下是回答:
可以使用 OpenCV 中的函数 cv::boundingRect() 来计算轮廓的外接矩形。具体代码如下:
cv::Mat image = cv::imread("image.jpg");
cv::Mat gray;
cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);
cv::threshold(gray, gray, , 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
std::vector<std::vector<cv::Point>> contours;
cv::findContours(gray, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
cv::Rect boundingRect = cv::boundingRect(contours[]);
cv::rectangle(image, boundingRect, cv::Scalar(, , 255), 2);
cv::imshow("image", image);
cv::waitKey();
注意:以上代码仅适用于单个轮廓的情况。如果有多个轮廓,需要在循环中计算每个轮廓的外接矩形。
相关问题
opencv外接矩形尺寸
在OpenCV中,可以使用cv2.boundingRect()函数来获取轮廓的外接矩形。该函数返回一个四元组,分别表示矩形左上角的坐标和矩形的宽度和高度。
例如,假设我们有一个轮廓contour,可以使用以下代码获取其外接矩形的尺寸:
```
x, y, w, h = cv2.boundingRect(contour)
```
其中,x和y是矩形左上角的坐标,w和h是矩形的宽度和高度。
opencv 外接矩形 java实现
在Java中使用OpenCV实现外接矩形可以按照以下步骤进行:
1. 导入OpenCV库和相关的Java类库。
```
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
```
2. 读入图像并进行灰度化处理。
```
Mat src = Imgcodecs.imread("path/to/image.jpg");
Mat gray = new Mat();
Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
```
3. 对图像进行二值化处理。
```
Mat binary = new Mat();
Imgproc.threshold(gray, binary, 0, 255, Imgproc.THRESH_BINARY | Imgproc.THRESH_OTSU);
```
4. 进行轮廓检测,并获取轮廓的外接矩形。
```
List<MatOfPoint> contours = new ArrayList<>();
Mat hierarchy = new Mat();
Imgproc.findContours(binary, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
for (int i = 0; i < contours.size(); i++) {
Rect rect = Imgproc.boundingRect(contours.get(i));
Imgproc.rectangle(src, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0), 2);
}
```
5. 显示处理后的图像。
```
Imgcodecs.imwrite("path/to/output.jpg", src);
```
以上代码可以实现对图像进行外接矩形的检测和绘制,其中boundingRect()方法可以获取轮廓的外接矩形,rectangle()方法用于绘制矩形框,可以根据需要自行调整绘制时的颜色和线宽。
阅读全文