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)
复制代码

 

posted @   求知律己  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示