opencv如何中心点和边长获得矩形轮廓点的坐标
时间: 2023-11-27 19:49:09 浏览: 329
使用OpenCV中的函数 `cv2.boxPoints()` 可以从矩形的中心点和边长计算出矩形的四个角点的坐标。
下面是一个示例代码,展示了如何从矩形的中心点和边长计算出矩形的四个角点的坐标:
```python
import cv2
# 矩形中心点坐标
center = (100, 100)
# 矩形边长
width = 50
height = 80
# 矩形旋转角度(可选)
angle = 30
# 创建旋转矩阵(如果需要旋转的话)
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1)
# 计算矩形四个角点坐标
rect_points = cv2.boxPoints((center, (width, height), angle))
# 应用旋转矩阵(如果需要旋转的话)
rect_points = cv2.transform(np.array([rect_points]), rotation_matrix)[0]
# 打印矩形四个角点坐标
for point in rect_points:
print(point)
```
这个代码会输出矩形四个角点的坐标,可以根据需要进行使用。
相关问题
opencv指定中心点和边长画矩形
在OpenCV中,你可以使用`rectangle()`函数来绘制一个矩形。如果你想指定矩形的中心点和边长,你需要首先计算左上角和右下角的坐标。以下是一个简单的示例:
```cpp
#include <opencv2/opencv.hpp>
cv::Point center; // 中心点坐标
int width, height; // 边长
// 计算左上角和右下角的坐标
cv::Point topLeft = center - cv::Size(width / 2, height / 2);
cv::Point bottomRight = center + cv::Size(width / 2, height / 2);
// 创建一个空的 Mat 对象(这里是8位灰度图像大小)
cv::Mat img(500, 500, CV_8UC1, cv::Scalar(255)); // 假设你的图片是500x500像素
// 使用 rectangle 函数绘制矩形
cv::rectangle(img, topLeft, bottomRight, cv::Scalar(0, 0, 255), 2); // 颜色为蓝色,线宽为2像素
// 显示图像
cv::imshow("Rectangle", img);
cv::waitKey(0); // 等待按键,0表示无限等待
// 如果你想保存这个图像,可以添加如下代码:
// cv::imwrite("output.png", img);
如何根据矩形的中心和边长获得矩形轮廓
假设矩形的中心坐标为 $(x_c, y_c)$,边长为 $L$。则矩形的左上角坐标为 $(x_c - \frac{L}{2}, y_c - \frac{L}{2})$,右下角坐标为 $(x_c + \frac{L}{2}, y_c + \frac{L}{2})$。
因此,可以根据这两个坐标点确定矩形轮廓。具体来说,可以使用 OpenCV 库中的 `rectangle` 函数来画出矩形轮廓。代码如下:
```python
import cv2
# 矩形中心坐标
x_c, y_c = 100, 100
# 矩形边长
L = 50
# 计算左上角和右下角坐标
x1, y1 = int(x_c - L/2), int(y_c - L/2)
x2, y2 = int(x_c + L/2), int(y_c + L/2)
# 画矩形轮廓
img = cv2.imread('test.jpg')
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`cv2.rectangle` 函数的参数分别为:待绘制的图像、左上角坐标、右下角坐标、颜色、线条宽度。以上代码会在一张名为 `test.jpg` 的图片中画出矩形轮廓,并显示在窗口中。
阅读全文