1 图像IO操作的API

读取图像:cv2.imread(‘image/bus.jpg’)
显示图像:cv2.imshow
保存图像:cv2.imwrite

import cv2
import matplotlib.pyplot

# 1) 读取图像,后面加0 会显示灰度图片
img=cv2.imread('image/bus.jpg',0)
#  2)显示图像
# 2.1 OpenCV
# cv2.imshow('bus',img)
# # waitKey不断刷新图像,waitKey(0)表示程序会无限制的等待用户的按键事件
# # imgshow 的时候 , 如果设置 waitKey(0) , 代表按任意键继续
# cv2.waitKey(0)
# # cv2.destroyAllWindows() 用来删除窗口的,()里不指定任何参数,则删除所有窗口,删除特定的窗口,往()输入特定的窗口值
# cv2.destroyAllWindows()

# 2.2 matplotlib
# 彩色图
# matplotlib.pyplot.imshow(img[:,:,::-1])
# 灰度图
matplotlib.pyplot.imshow(img,cmap=matplotlib.pyplot.cm.gray)
matplotlib.pyplot.show()
# 图像保存
t=cv2.imwrite('image/busread.png',img)
print(t)

2 在图像上绘制几何图像

绘制直线:cv2.line
绘制圆形:cv2.circle
绘制矩形:cv2.rectangle
图像上面添加文字:cv2.putText

import numpy
import cv2
import matplotlib.pyplot

# 1)创建图像
# 生成黑色大小512,512的图像,分为3个波段,数据类型
img=numpy.zeros((512,512,3),numpy.uint8)
# 2)绘制图像
# 绘制图像、起点、终点、线条颜色、线条宽度
cv2.line(img,(0,0),(511,511),(255,0,0),5)
# 绘制图像,中心点,半径,颜色,线条宽度
cv2.circle(img,(256,256),60,(0,0,255),4)
#绘制图像、矩形左上角、矩形右下角、线条颜色、线条宽度
cv2.rectangle(img,(100,100),(400,400),(0,255,0),5)
# 图像、文本、文本位置、字体、字体大小、线型写入
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(100,500),font,4,(255,255,255),2,cv2.LINE_AA)
# 3)显示结果
matplotlib.pyplot.imshow(img[:,:,::-1])
matplotlib.pyplot.show()

3 直接使用行列索引获取图像中的像素并进行修改

4 图像的属性

形状:img.shape
图像大小:img.size,
数据类型:img.dtype

import cv2
import matplotlib.pyplot as plt

 img=np.zeros((256,256,3),np.uint8)
 #获取某个像素点的值
 px=img[100,100]
 #仅获取蓝色通道的强度值
 blue=img[100,100,0]
 # 修改某个位置的像素值,形状大小、图像大小、数据类型 
 print(img.shape,img.size,img.dtype)

5 通道

拆分通道:cv.split()
通道合并:cv.merge()

2.6 色彩空间的改变

cv.cvtColor[input_image,flag]

# 2)通道拆分后合并
# 1)通道拆分
b,g,r=cv2.split(img)
# 2)通道合并
img2=cv2.merge((b,g,r))
# 图像翻转
plt.imshow(img2[:,:,::-1])
plt.show()
#转换为灰度图
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.imshow(gray,cmap=plt.cm.gray)
plt.show()
#转换为hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
plt.imshow(hsv)
plt.show()
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐