2 OpenCV 基本操作
OpenCV 基本操作
1 图像的Io操作
1.1读取图像

#cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。 #cv.IMREAD*GRAYSCALE:以灰度模式加载图像 #cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。 #1、0或者-1来替代上面三个标志 import numpy as np import cv2 as cv # 以灰度图的形式读取图像 img = cv.imread('messi5.jpg',0)
1.2 显示图像

# opencv中显示 cv.imshow('image',img) cv.waitKey(0) # matplotlib中展示 plt.imshow(img[:,:,::-1])
1.3 保存图像
cv.imwrite('messigray.png',img)
示例:

import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img = cv.imread('messi5.jpg',0) # 2 显示图像 # 2.1 利用opencv展示图像 cv.imshow('image',img) # 2.2 在matplotplotlib中展示图像 plt.imshow(img[:,:,::-1]) plt.title('匹配结果'), plt.xticks([]), plt.yticks([]) plt.show() k = cv.waitKey(0) # 3 保存图像 cv.imwrite('messigray.png',img)
2 绘制几何图形
#我们生成一个全黑的图像,然后在里面绘制图像并添加文字

import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 创建一个空白的图像 img = np.zeros((512,512,3), np.uint8) # 2 绘制图形 cv.line(img,(0,0),(511,511),(255,0,0),5) cv.rectangle(img,(384,0),(510,128),(0,255,0),3) cv.circle(img,(447,63), 63, (0,0,255), -1) font = cv.FONT_HERSHEY_SIMPLEX cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA) # 3 图像展示 plt.imshow(img[:,:,::-1]) plt.title('匹配结果'), plt.xticks([]), plt.yticks([]) plt.show()
3 获取并修改图像中的像素点

import numpy as np import cv2 as cv img = cv.imread('messi5.jpg') # 获取某个像素点的值 px = img[100,100] # 仅获取蓝色通道的强度值 blue = img[100,100,0] # 修改某个位置的像素值 img[100,100] = [255,255,255]
4 获取图形属性
img.shape #形状 image.size #图像大小 img.dtype #数据类型
5 图像通道拆分与合并
# 通道拆分 b,g,r = cv.split(img) # 通道合并 img = cv.merge((b,g,r))
6 色彩空间转换
参数:
- input_image: 进行颜色空间转换的图像
- flag: 转换类型
- cv.COLOR_BGR2GRAY : BGR↔Gray
- cv.COLOR_BGR2HSV: BGR→HSV
cv.cvtColor(input_image,flag)
7 算数操作
7.1图像的加法

import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img1 = cv.imread("view.jpg") img2 = cv.imread("rain.jpg") # 2 加法操作 img3 = cv.add(img1,img2) # cv中的加法 img4 = img1+img2 # 直接相加 # 3 图像显示 fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100) axes[0].imshow(img3[:,:,::-1]) axes[0].set_title("cv中的加法") axes[1].imshow(img4[:,:,::-1]) axes[1].set_title("直接相加") plt.show()
--->
7.2 图像的混合
现在我们把两幅图混合在一起。第一幅图的权重是0.7,第二幅图的权重是0.3

import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img1 = cv.imread("view.jpg") img2 = cv.imread("rain.jpg") # 2 图像混合 img3 = cv.addWeighted(img1,0.7,img2,0.3,0) # 3 图像显示 plt.figure(figsize=(8,8)) plt.imshow(img3[:,:,::-1]) plt.show()
作者:华王
博客:https://www.cnblogs.com/huahuawang/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具