Python中绘制图像数组上的边界框及其它图像处理操作
发布时间:2023-12-15 19:11:06
在Python中,我们可以使用OpenCV库来处理图像。下面是一些常见的图像处理操作及其使用例子:
1. 导入需要的库:
import cv2 import numpy as np
2. 加载图像并显示:
image = cv2.imread('image.jpg')
cv2.imshow('Original Image', image)
cv2.waitKey(0)
3. 将图像转换为灰度图像:
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Scale Image', gray_image)
cv2.waitKey(0)
4. 二值化处理:
ret, binary_image = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Binary Image', binary_image)
cv2.waitKey(0)
5. 边缘检测:
edges = cv2.Canny(gray_image, 50, 150)
cv2.imshow('Edge Detection', edges)
cv2.waitKey(0)
6. 绘制轮廓:
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)
cv2.imshow('Contours', image)
cv2.waitKey(0)
7. 绘制边界框:
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 3)
cv2.imshow('Bounding Boxes', image)
cv2.waitKey(0)
8. 图像平滑处理:
blur_image = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imshow('Blur Image', blur_image)
cv2.waitKey(0)
9. 图像旋转:
rows, cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)
rotated_image = cv2.warpAffine(image, M, (cols, rows))
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
10. 图像缩放:
resized_image = cv2.resize(image, (int(image.shape[1] / 2), int(image.shape[0] / 2)))
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
这些操作可以帮助你在图像处理中实现一些常见的功能,如显示图像、灰度化、二值化、边缘检测、轮廓绘制、边界框绘制、图像平滑、图像旋转和缩放等。你可以根据具体需求进行调整和组合。
