opencv-python帮助⽂档_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数组操作
包介绍详细
作⽤:
遍历数组中的每个像素点
修改数组中像素点的值
rectangle函数opencv
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
⽤inRange处理
获取视频中的蓝⾊:
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)
if 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):
py()
h,w=image.shape[:2]
mask= np.zeros([h+2,w+2],np.uint8)
cv.floodFill(copyImg,mask,(30,30),(0,255,255),(100,100,100),(50,50,50), cv.FLOODFILL_FIXED_RANGE) #改变图像 泛洪填充
cv.imshow("fill_color",copyImg)
def fill_binary():
s([400,400,3],np.uint8)
image[100:300 , 100:300 , :] =255
cv.imshow("fill_binary",image)
s([402,402,1],np.uint8)
mask[101:301,101:301] =0
cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_MASK_ONLY) #不改变图像 只填充遮罩层
cv.imshow("filled binary",image)
floodFill()
floodFill(Mat image,Mat mask,Point seedPoint,Scalar newVal)
floodFill(image, mask, seedpoint ,newVal,rect,loDiff,upDiff,flags)
src(seed.x,seed.y)-loDiff<=src(x,y)<=src(seed.x,seed.y)+upDiff合并图像
作⽤:合并图像
7.模糊操作
均值模糊,中值模糊,⾃定义模糊
模糊是卷积的⼀种表象
dst=cv.blur(image,(15,1)) #x⽅向15像素卷积,y⽅向1像素卷积,不模糊dianBlur(image,5) #中值模糊 常⽤于去燥点
s([5,5],np.float32)/25
dst=cv.filter2D(image,-1,kernel=kernel) #⾃定义模糊
⾼斯模糊
def clamp(pv):
if pv>255:
return 255
if pv<0:
return 0
else:
return pv
⾼斯模糊原理代码
def gaosi_noise(image):
h,w,c = image.shape
for rowin range(h):
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论