python:opencv开发⼿册1.基本语法
src = cv.imread("E:\\1.jpg") //获取图⽚位置
cv.namedWindow("Image",cv.WINDOW_AUTOSIZE) //命名显⽰窗⼝并设置属性
cv.imshow("Image",img) //显⽰窗⼝并将图⽚显⽰
cv.waitKey(0) //等待输⼊响应
cv.destroyAllWindows() //销毁窗⼝
2.图像加载与保存
图⽚属性
1.通道数⽬
2.⾼宽
3.像素数据
4.图像类型
图⽚属性获取
print(type(image)) //显⽰image类型
print(image.shape) //显⽰图⽚宽⾼和通道数
print(image.size) //显⽰总像素数据⼤⼩
print(image.dtype) //通道所占位数
摄像头获取
capture=cv.VideoCapture(0) //获取视频
while(True):
ret, ad() //调⽤摄像头
frame=cv.flip(frame,1) //镜像调整
cv.imshow("video",frame) //显⽰窗⼝
c=cv.waitKey(50)
if c==27:
break
保存图⽚
cv.imwrite("E:/result.png",img) //将img保存在路径下并命名与格式3.Numpy数组操作
包介绍详细 w w w.num py.o rg
w.numpy.o r g
作⽤:
遍历数组中的每个像素点
修改数组中像素点的值
data\dtype\size\shape\len
遍历图像像素
def access_pixels(image):
print(image.shape)
height=image.shape[0]
width=image.shape[1]
channel=image.shape[2]
print("width:%s,height:%s,channels:%s"%(width,height,channel))
for rowin range(height):
for colin range(width):
for cin range(channel):
pv = image[row, col, c]
image[row,col,c]=255-pv
cv.imshow("pixels_demo",image)
注:对于上述操作可以⽤像素取反函数完成
def inverse(image):
dst=cv.bitwise_not(image) //像素取反
cv.imshow("show",dst)
初始化图⽚
fill(122) //填充数组
reshape([1,9]) //改变数组形状
4.⾊彩空间
相关概念
RGB,HSV, HIS,YCrCb, YUV
代码检测:
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("gray",gray)
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)
cv.imshow("hsv",hsv)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
cv.imshow("yuv", yuv)
Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb) cv.imshow("Ycrcb", Ycrcb)
⾊彩空间转换API
⽤inR a nge处理
获取视频中的蓝⾊:
capture = cv.VideoCapture("E:\\test.mp4")
while(True):
ret, frame = ad()
if ret ==False:
break
hsv=cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lower=np.array([100,43,46])
upper=np.array([124,255,255])#蓝⾊区域范围
mask=cv.inRange(hsv,lowerb=lower,upperb=upper) cv.imshow("mask",mask)
cv.imshow("video", frame)
c = cv.waitKey(40)
rectangle函数opencvif c ==27:
break
分离与合并通道
r,g,b= cv.split(src) #分离
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
<([r,g,b]) #合并
5.像素运算
算术运算
加减乘除——调节亮度,对⽐度
def add_demo(m1,m2):
dst = cv.add(m1, m2) #加
cv.imshow("add", dst)
def subtract_demo(m1,m2):
dst = cv.subtract(m1, m2) #减
cv.imshow("substract", dst)
def divide_demo(m1,m2):
dst = cv.divide(m1, m2) #除
cv.imshow("divide", dst)
def multiply_demo(m1,m2):
dst = cv.multiply(m1, m2) #乘
cv.imshow("multiply", dst)
注:mean(src) #求均值
M,dev = meanStdDev(src) #返回均值和⽅差(对⽐度)
逻辑运算
与或⾮——遮罩层控制
dst = cv.bitwise_and(m1, m2) #与
dst = cv.bitwise_or(m1, m2) #或
dst = cv.bitwise_not(m1) #⾮
调整亮度对⽐度
#调整对⽐度与亮度 c:对⽐度,b:亮度
def contract_brightness_demo(image,c,b):
h,w,ch=image.shape
s([h,w,ch],image.dtype) #调整亮度对⽐度dst=cv.addWeighted(image,c,blank,1-c,b)
cv.imshow("con_bri_demo", dst)
6.ROI与泛洪填充
注:ROI:所选处理区域
#改变图⽚某区域颜⾊
face= src[50:250,100:300]
gray=cv.cvtColor(face,cv.COLOR_BGR2GRAY)
backface=cv.cvtColor(gray,cv.COLOR_GRAY2BGR)
face= src[50:250,100:300]=backface
cv.imshow("face",src)
泛洪填充
def fill_color_demo(image):
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论