Python安装OpenCV
在计算机视觉和图像处理领域,OpenCV是一个非常流行的开源库,它提供了丰富的图像处理和计算机视觉算法。本文将介绍如何在Python中安装OpenCV,并提供一些示例代码来演示其基本用法。
安装OpenCV
在Python中安装OpenCV可以通过pip来完成。首先,确保你的Python环境已经安装了pip。然后,打开命令行窗口,运行以下命令来安装OpenCV:
pip install opencv-python
安装完成后,你就可以在Python中使用OpenCV库了。
示例代码
1. 加载并显示图像
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 显示图像
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 灰度化图像
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 灰度化
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('Gray Image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 保存图像
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 保存图像
cv2.imwrite('saved_image.jpg', img)
4. 绘制图像
import cv2
import numpy as np
# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制直线
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
# 显示图像
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 绘制矩形
import cv2
import numpy as np
# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制矩形
cv2.rectangle(img, (100, 100), (400, 400), (0, 255, 0), 3)
# 显示图像
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
6. 绘制圆形
import cv2
import numpy as np
# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制圆形
cv2.circle(img, (256, 256), 100, (0, 0, 255), -1)
# 显示图像
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
7. 绘制文本
import cv2
import numpy as np
# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制文本
cv2.putText(img, 'Hello, OpenCV!', (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# 显示图像
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
8. 图像平滑
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 图像平滑
smooth_img = cv2.GaussianBlur(img, (5, 5), 0)
# 显示平滑后的图像
cv2.imshow('Smooth Image', smooth_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
9. 边缘检测
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 边缘检测
edges = cv2.Canny(img, 100, 200)
# 显示边缘图像
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
10. 图像旋转
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 获取图像尺寸
rows, cols = img.shape[:2]
# 旋转图像
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
rotated_img = cv2.warpAffine(img, M, (cols, rows))
# 显示旋转后的图像
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
11. 图像缩放
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 缩放图像
resized_img = cv2.resize(img, None, fx=0.5, fy=0.5)
# 显示缩放后的图像
cv2.imshow('Resized Image', resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
12. 图像腐蚀
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 创建一个腐蚀核
kernel = np.ones((5, 5), np.uint8)
# 图像腐蚀
eroded_img = cv2.erode(img, kernel, iterations=1)
# 显示腐蚀后的图像
cv2.imshow('Eroded Image', eroded_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
13. 图像膨胀
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 创建一个膨胀核
kernel = np.ones((5, 5), np.uint8)
# 图像膨胀
dilated_img = cv2.dilate(img, kernel, iterations=1)
# 显示膨胀后的图像
cv2.imshow('Dilated Image', dilated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
14. 图像阈值化
import cv2
# 读取灰度图像
img = cv2.imread('image.jpg', 0)
# 图像阈值化
ret, thresh_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 显示阈值化后的图像
cv2.imshow('Threshold Image', thresh_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
15. 图像轮廓检测
import cv2
# 读取灰度图像
img = cv2.imread('image.jpg', 0)
# 图像阈值化
ret, thresh_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 查找图像轮廓
contours, hierarchy = cv2.findContours(thresh_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)
# 显示带有轮廓的图像
cv2.imshow('Contour Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
16. 图像直方图### 16. 图像直方图均衡化
import cv2
# 读取灰度图像
img = cv2.imread('image.jpg', 0)
# 直方图均衡化
equalized_img = cv2.equalizeHist(img)
# 显示直方图均衡化后的图像
cv2.imshow('Equalized Image', equalized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
17. 图像模糊
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 图像模糊
blurred_img = cv2.blur(img, (5, 5))
# 显示模糊后的图像
cv2.imshow('Blurred Image', blurred_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
18. 图像边缘增强
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 边缘增强
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
enhanced_img = cv2.filter2D(img, -1, kernel)
# 显示边缘增强后的图像
cv2.imshow('Enhanced Image', enhanced_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
19. 图像旋转校正
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测直线
edges = cv2.Canny(gray_img, 50, 150, apertureSize=3)
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
# 根据直线角度进行旋转校正
angle = lines[0][0][1] * 180 / np.pi
rotated_img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE if angle > 45 else cv2.ROTATE_90_COUNTERCLOCKWISE)
# 显示旋转校正后的图像
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
20. 图像拼接
import cv2
# 读取两张图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# 拼接图像
result = cv2.hconcat([img1, img2])
# 显示拼接后的图像
cv2.imshow('Merged Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()