python opencv识别图片中物体的个数
时间: 2023-06-12 18:04:05 浏览: 530
OpenCV+Python识别图片中的数字
使用 OpenCV 可以很方便地实现图片中物体的数量识别,具体步骤如下:
1. 读取图片并转换为灰度图像。
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 对灰度图像进行二值化处理,将图像转换为黑白二值图像。
```python
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
```
3. 对二值图像进行形态学操作,去除噪声。
```python
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
morph = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
```
4. 寻找图像中的轮廓。
```python
contours, hierarchy = cv2.findContours(morph, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
5. 统计轮廓的数量即为图片中物体的数量。
```python
print(f"物体数量:{len(contours)}")
```
完整代码如下:
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
morph = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
contours, hierarchy = cv2.findContours(morph, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print(f"物体数量:{len(contours)}")
```
注意:以上代码中 `findContours` 返回的轮廓数量可能包含一些噪声或者不需要的轮廓,需要根据实际情况进行筛选。
阅读全文