OPenCV基本操作
1.图像的IO操作:
图像的读取,输出和显示
'''先导入import numpy as np 再导入import cv2 as cv 最后导入import matplotlib.pyplot as plt ''' img1 = cv.imread('kzf.jpg',1)#读取图像 plt.imshow(img1) plt.show()#显示图像 plt.imwrite('picture.jpg',img1)#将img1存储在picture.jpg中
2.绘制集合图像,有图像的创建,直线,圆形,矩形,添加文本文字
import numpy as np import cv2 as cv import matplotlib.pyplot as plt #1)创建图像大小 img = np.zeros((长,宽,线条宽度),np.uint8)#数据类型转换为整型 img = np.zeros((512,512,5)条宽度),np.uint8) #绘制直线 cv.line(img,(左上角坐标),(右下标坐标),(颜色),线条宽度) cv.line(img,(0,0),(511,511),(255,0,0),5) #绘制圆形 cv.circle(img,(圆心坐标),半径长度,(颜色),线条宽度) cvcircle(img,(100,100),50),(0,255,0),5) #绘制矩形 cv.rectangle(img,(左上角坐标),(右下标坐标),(颜色),线条宽度) cv.rectangle(img,(0,0),(511,511),(0,0,255),5) #添加文字 cv.putText(img.添加字符串,字体类型,字体大小,颜色,线条宽度) cv.putText(img, "hello",(100,100),cv.FONT_HERSHEY_COMPLEX,4,(255,255,255),5)
3.获取图像的像素点
import numpy as np import cv2 as cv import matplotlib.pyplot as plt img = cv.imread('kzf.jpg',1) px = img[100,100]#获取图像的某个像素点值 blue = img[100,100,0]#获取蓝色强度通道像素值 img[100,100] = [255,255,255]#修改像素值
4.获取图像的属性
1)获取图像的形状:img.shape
2)获取图像的大小:img.size
3)获取图像的数据类型:img.dtype
5.图像的拆分和合并
1)图像的拆分
b,g,r = cv.split(img)
2)通道合并
img = cv.merge(b,g,r)
6.色彩空间转换(常用的有两种)
1)cv.COLOR_BGR2GRAY:BGR<-->GRAY gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) plt.imshow(img,cmap = plt.cm.gray) 2)cv.COLOR_BGR2HSV:BGR<-->HSV hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV) plt.imshow(hsv)
7.图像的加法和混合
1)注意:不管是图像的加法还是混合,必须图像的大小相同 import numpy as np import cv2 as cv import matplotlib.pyplot as plt img1 = cv.imread('kzf1.jpg',1) plt.imshow(img1) plt.show() img2 = cv.imread('kzf2.jpg',1) plt.imshow(img2) plt.show() 两种形式相加: 第一种是OpenCV的cv.add()函数#饱和运算250+10 = 260输出255 img3 = cv.add(img1,img2) plt.imshow(img3) plt.show() 第二种直接+直接相加#取模运算,250+10 = 160%256 = 4 img4 = img1+img2 plt.imshow(img4) plt.show()
图像的混合通过cv.Weighted()函数
img5 = cv.Weighted(img1,0.3,img2,0.7)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!