python 抠图算法_python+opencv抠图并旋转
时间: 2023-07-25 17:20:12 浏览: 225
好的,针对您的问题,我提供以下代码作为参考:
```python
import cv2
# 读取原始图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用阈值分割算法进行二值化
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 找到最大的轮廓并将其用矩形框起来
max_contour = max(contours, key=cv2.contourArea)
x, y, w, h = cv2.boundingRect(max_contour)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 将原始图像旋转一定角度
(h, w) = img.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0)
rotated = cv2.warpAffine(img, M, (w, h))
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', rotated)
cv2.waitKey(0)
```
这段代码使用 OpenCV 进行图像处理,包括抠图和旋转。其中,使用的阈值分割算法是一种简单的图像分割方法,可以将图像转换为二值图像,便于后续的轮廓查找和矩形框绘制。对于旋转操作,可以使用 `cv2.getRotationMatrix2D` 函数获取变换矩阵,再使用 `cv2.warpAffine` 函数进行仿射变换。
阅读全文