利用python,opencv来去除图像的黑边(上下左右都有黑边的)
时间: 2024-03-18 17:42:36 浏览: 430
可以通过以下步骤来去除图像的黑边:
1. 读取图像并转换为灰度图像。
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 通过阈值处理来获取图像的边界。
```python
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
```
3. 查找图像的最外层轮廓。
```python
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
4. 获取最外层轮廓的边界矩形,并将其作为新图像的 ROI(感兴趣区域)。
```python
x, y, w, h = cv2.boundingRect(contours[0])
new_img = img[y:y+h, x:x+w]
```
5. 保存新图像。
```python
cv2.imwrite('new_image.jpg', new_img)
```
完整代码如下:
```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 + cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
x, y, w, h = cv2.boundingRect(contours[0])
new_img = img[y:y+h, x:x+w]
cv2.imwrite('new_image.jpg', new_img)
```
注意:如果图像的黑边不是纯黑色,可以通过调整阈值来适当调整。
阅读全文