opencv用包络画框
时间: 2023-11-20 21:57:47 浏览: 44
以下是使用OpenCV实现包络画框的Python代码示例:
```python
import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制包络框
for cnt in contours:
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,我们首先读取了一张图片,然后将其转换为灰度图像,并进行二值化处理。接着,我们使用`cv2.findContours()`函数查找图像中的轮廓,并使用`cv2.boundingRect()`函数获取每个轮廓的包络框。最后,我们使用`cv2.rectangle()`函数在原图像上绘制包络框,并显示结果。
相关问题
opencv 图片中画框标注中文
要在 OpenCV 图片中画框并标注中文,可以使用以下步骤:
1. 导入所需的库和模块:
```python
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image
```
2. 读取图片并绘制矩形框:
```python
img = cv2.imread('image.jpg')
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
```
这里的 `(x1, y1)` 和 `(x2, y2)` 分别是矩形框的左上角和右下角坐标。
3. 使用 Pillow 库中的 ImageFont、ImageDraw 模块绘制中文标注:
```python
# 将 OpenCV 图像转换为 Pillow 图像
img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 设置字体
font_path = 'SimHei.ttf' # 指定字体文件路径
font = ImageFont.truetype(font_path, 16)
# 新建绘图对象
draw = ImageDraw.Draw(img_pil)
# 绘制中文标注
draw.text((x1, y1 - 20), '标注文字', font=font, fill=(0, 255, 0))
# 将 Pillow 图像转换回 OpenCV 图像
img = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)
```
这里的 `(x1, y1 - 20)` 是标注文字的左下角坐标,`-20` 是为了将文字向上偏移一些,避免与矩形框重叠。
最后,使用 `cv2.imshow()` 显示图片即可:
```python
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
python opencv 脸部区域画框
您可以使用OpenCV的CascadeClassifier来检测人脸,并使用cv2.rectangle函数在人脸区域绘制矩形框。
以下是一个示例代码:
```python
import cv2
# 加载人脸分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 读取图像
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 在人脸区域绘制矩形框
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
# 显示结果
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,haarcascade_frontalface_default.xml是OpenCV提供的人脸分类器文件,可以从OpenCV官网下载。您需要将该xml文件和测试图像放在同一目录下,并将代码中的文件名修改为对应文件名。