使用vs code中Python与opencv编写程序代码用于特征提取,要求如下:1、载入图像并完成图像分割,2、使用函数显示图像中目标的边界,3、标记图像中的连续区域并显示,4、进行特征表达包括外接矩形与外接圆,面积,周长。
时间: 2024-12-18 12:35:03 浏览: 19
在Visual Studio Code (VSCode) 中使用 Python 和 OpenCV 进行特征提取可以按照以下步骤进行:
1. **安装所需库**:
首先确保已经安装了必要的库,如 `opencv-python`, `matplotlib` 可以用于绘图,可以在终端或命令提示符中运行:
```
pip install opencv-python matplotlib
```
2. **载入图像并分割**:
使用 `cv2.imread()` 载入图片,然后通过阈值分割或其他方法(比如边缘检测)将图像分割成感兴趣的目标区域:
```python
import cv2
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray_img, 150, 255, cv2.THRESH_BINARY_INV)
```
3. **显示边界**:
使用 `contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)` 获取轮廓信息,然后绘制边界:
```python
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow("Segmented Image", img)
```
4. **标记连续区域并显示**:
对于标记连续区域,可以使用 `cv2.drawContours()` 函数,传入原图和找到的所有轮廓:
```python
cv2.drawContours(img, contours, -1, (0, 0, 255), 3)
```
5. **特征表达**:
计算每个轮廓的特征,例如外接矩形和外接圆:
```python
for contour in contours:
rect = cv2.minAreaRect(contour)
box = cv2.boxPoints(rect)
box = np.int0(box)
# 计算矩形特征
area_rect = cv2.contourArea(contour)
peri_rect = cv2.arcLength(rect, True)
# 如果需要,计算外接圆
((center_x, center_y), radius), _ = cv2.minEnclosingCircle(contour)
circumference_circle = 2 * np.pi * radius
# 显示特征数据
cv2.circle(img, (int(center_x), int(center_y)), int(radius), (0, 0, 255), 2)
print(f"Contour Area: {area_rect}, Perimeter: {peri_rect}, Circumference: {circumference_circle}")
```
6. **显示结果**:
最后别忘了关闭所有窗口:
```python
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文