段力辉版本《OpenCV-Python 中文教程》学习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了段力辉版本《OpenCV-Python 中文教程》学习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7786字,纯文字阅读大概需要12分钟。
内容图文
![段力辉版本《OpenCV-Python 中文教程》学习](/upload/InfoBanner/zyjiaocheng/634/20f07b70061c40d2bc5905a2b6570211.jpg)
src?=?cv2.imread("e:/template/tiantan.jpg")hsv?=?cv2.cvtColor(src,cv2.COLOR_BGR2HSV)lower_blue?=?np.array([100,43,46])upper_blue?=?np.array([124,255,255])mask?=?cv2.inRange(hsv,lower_blue,upper_blue)res?=?cv2.bitwise_and(src,src,mask=mask)cv2.imshow("hsv",hsv)cv2.imshow("mask",mask)cv2.imshow("res",res)
cv2.waitKey(0)2、warpperspective 透视变化的python实现
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025017431.jpg)
src?=?cv2.imread("e:/template/steel03.jpg")rows,cols,ch?=?src.shapepts1?=?np.float32([[122,0],[814,0],[22,540],[910,540]])pts2?=?np.float32([[0,0],[960,0],[0,540],[960,540]])M?=?cv2.getPerspectiveTransform(pts1,pts2)dst?=?cv2.warpPerspective(src,M,(cols,rows))
cv2.imshow("src",dst)cv2.waitKey(0)这里操作的核心,是一个np的矩阵。在C++中,使用Vector,可能会造成很多浪费。3、自适应阈值import?cv2import?numpy?as?np?obj?=?cv2.imread("e:/template/pig.jpg",0)ret,th1?=?cv2.threshold(obj,100,255,cv2.THRESH_BINARY)th2?=?cv2.adaptiveThreshold(obj,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)ret3,th3?=?cv2.threshold(obj,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)cv2.imshow("th3",th3)print(ret3)cv2.waitKey()当参数选择OTSU的时候,能够根据计算,自动算出下限。但是我认为这一点并没有什么特别的用途。4、模糊处理obj?=?cv2.imread("e:/template/pig.jpg",0)blur=?cv2.blur(obj,(3,3))gaussBlur=cv2.GaussianBlur(obj,(3,3),0)median?=?cv2.medianBlur(obj,5)bilate?=?cv2.bilateralFilter(obj,0.75,0.75)5、形态学变换obj?=?cv2.imread("e:/template/pig.jpg",0)opening?=?cv2.morphologyEx(obj,cv2.MORPH_OPEN,(7,7))cv2.imshow("obj",obj)cv2.imshow("opening",opening)我喜欢这种写法,这将有长远影响。6、梯度变化,包括1阶、2阶和混合的。obj?=?cv2.imread("e:/template/pig.jpg",0)laplacian?=?cv2.Laplacian(obj,cv2.CV_64F)sobelx=cv2.Sobel(obj,cv2.CV_64F,1,0,ksize=5)sobely=cv2.Sobel(obj,cv2.CV_64F,0,1,ksize=5)
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025017792.jpg)
?A?=?cv2.imread("e:/template/apple.jpg")B?=?cv2.imread("e:/template/orange.jpg")
G?=?A.copy()gpA=[G]for?i?in?range(6):????G?=?cv2.pyrDown(G)????gpA.append(G)
G?=?B.copy()gpB?=?[G]for?i?in?range(6):????G?=?cv2.pyrDown(G)????gpB.append(G)
lpA?=?[gpA[5]]for?i?in?range(5,0,-1):????GE?=?cv2.pyrUp(gpA[i])????L?=?cv2.subtract(gpA[i-1],GE)????lpA.append(L)
lpB?=?[gpB[5]]for?i?in?range(5,0,-1):????GE?=?cv2.pyrUp(gpB[i])????L?=?cv2.subtract(gpB[i-1],GE)????lpB.append(L)
LS?=?[]for?la,lb?in?zip(lpA,lpB):????rows,cols,dpt=?la.shape????print(rows,cols)????ls?=?np.hstack((la[:,0:cols//2],lb[:,cols//2:]))?#直接横向排列????LS.append(ls)
ls_?=?LS[0]for?i?in?range(1,6):????ls_?=?cv2.pyrUp(ls_)????ls_?=?cv2.add(ls_,LS[i])
real?=?np.hstack((A[:,:cols//2],B[:,cols//2:]))cv2.imshow("ls_",ls_)cv2.imshow("real",real)cv2.waitKey()
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025018206.jpg)
src?=?cv2.imread("e:/template/rectangle.jpg")gray?=?cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)ret,thresh?=?cv2.threshold(gray,127,255,0)contours,hierarchy?=?cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)print(contours)src?=?cv2.drawContours(src,contours,-1,(0,255,0),3)cv2.imshow("src",src)cv2.waitKey()这里,使用cv2.CHAIN_APPROX_NONE或者不同的参数的话,会获得不同的轮廓结果。这对于我现有的轮廓分析研究,也是有帮助的。9、轮廓的最小? ?接圆和最大内切圆外接圆比较简单(x,y),radius?=?cv2.minEnclosingCircle(contours[0])center?=?(int(x),int(y))radius?=?int(radius)src?=?cv2.circle(src,center,radius,(0,255,0),2)
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025019027.jpg)
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025019480.jpg)
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025020416.jpg)
cv2.imshow("src",src)这是一种很好的方法,能够直接找出轮廓的各方向边界。11 模板匹配src?=?cv.imread("e:/template/lena.jpg",0)template?=?cv.imread("e:/template/lenaface.jpg",0)w,h?=?template.shaperes?=?cv.matchTemplate(src,template,cv.TM_CCOEFF)min_val,max_val,min_loc,max_loc?=?cv.minMaxLoc(res)cv.rectangle(src,max_loc,(max_loc[0]+w,max_loc[1]+h),(0,0,255),2)cv.imshow("template",template)cv.imshow("src",src)cv.waitKey()
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025020740.jpg)
src?=?cv.imread("e:/template/coin.jpg")gray?=?cv.cvtColor(src,cv.COLOR_BGR2GRAY)template?=?cv.imread("e:/template/coincut.jpg",0)w,h?=?template.shaperes?=?cv.matchTemplate(gray,template,cv.TM_CCOEFF_NORMED)threshold?=0.6loc?=?np.where(res>=threshold)print(loc)for?pt?in?zip(*loc[::-1]):#排序方法为height?width????print(pt)????cv.rectangle(src,pt,(pt[0]+w,pt[1]+h),(0,0,255),2)?cv.imshow("template",template)cv.imshow("src",src)cv.waitKey()特别需要注意其排序方法。但是这里的阈值选择,也是超参数类型的。
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025021490.jpg)
circles?=?cv.HoughCircles(src,cv.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)circles?=?np.uint16(np.around(circles))for?i?in?circles[0,:]:????cv.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)????cv.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv.imshow("src",cimg)cv.waitKey()
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025021918.jpg)
src?=?cv.imread("e:/template/water_coins.jpg")gray?=cv.cvtColor(src,cv.COLOR_BGR2GRAY)_,thresh?=?cv.threshold(gray,0,255,cv.THRESH_BINARY_INV+cv.THRESH_OTSU)
kernel?=?np.ones((3,3),np.uint8)opening?=?cv.morphologyEx(thresh,cv.MORPH_OPEN,kernel,iterations=2)sur_bg?=?cv.dilate(opening,kernel)
dist_transform?=?cv.distanceTransform(opening,1,5)_,sur_fg=cv.threshold(dist_transform,0.7*dist_transform.max(),255,0)sur_fg?=?np.uint8(sur_fg)unknow?=?cv.subtract(sur_bg,sur_fg)
_,markers1?=?cv.connectedComponents(sur_fg)markers?=?markers1+1markers[unknow?==255]?=?0
markers3?=?cv.watershed(src,markers)src[markers3?==?-1]?=?[255,0,0]cv.imshow("src",src)?cv.waitKey()
![段力辉版本《OpenCV-Python 中文教程》学习 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501025022329.jpg)
来自为知笔记(Wiz)
内容总结
以上是互联网集市为您收集整理的段力辉版本《OpenCV-Python 中文教程》学习全部内容,希望文章能够帮你解决段力辉版本《OpenCV-Python 中文教程》学习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。