OpenCV图片进行去噪声操作,再利用轮廓检测检测,画出轮廓,并进一步画出图中的旋转矩形和最小外包圆
时间: 2024-12-15 12:17:29 浏览: 11
在OpenCV库中,图像处理的一个常见步骤是先对图片进行去噪,以便提高后续分析的准确性和效率。常用的去噪方法有高斯滤波、中值滤波等。一旦图像预处理完成,可以使用`cv2.findContours()`函数从去噪后的图像中提取边缘轮廓。
首先,你需要读取并加载图片:
```python
import cv2
image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE) # 防止颜色干扰,通常使用灰度图像处理
```
然后,应用去噪操作,例如高斯滤波:
```python
kernel_size = 5 # 可调整大小
blurred_image = cv2.GaussianBlur(image, (kernel_size, kernel_size), 0)
```
接着,找到轮廓:
```python
contours, hierarchy = cv2.findContours(blurred_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
对于每个轮廓,你可以计算旋转矩形和最小外包圆:
```python
import numpy as np
for contour in contours:
x, y, w, h = cv2.boundingRect(contour) # 计算矩形边界
rect = np.int0(cv2.boxPoints(cv2.minAreaRect(contour))) # 计算旋转矩形
cv2.drawContours(image, [rect], -1, (0, 255, 0), 2) # 绘制旋转矩形
ellipse = cv2.fitEllipse(contour) # 计算最小外包椭圆
cv2.ellipse(image, ellipse, (0, 0, 255), 2) # 绘制最小外包圆
```
最后,显示结果:
```python
cv2.imshow("Original", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文