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 @ 2021-08-05 22:20  求知律己  阅读(181)  评论(0)    收藏  举报