博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
opencv3 深度估计与分割
阅读量:1860 次
发布时间:2019-04-26

本文共 2864 字,大约阅读时间需要 9 分钟。

GrabCut进行前景检测:

import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('statue_small.jpg')mask = np.zeros(img.shape[:2],np.uint8)bgdModel = np.zeros((1,65),np.float64)fgdModel = np.zeros((1,65),np.float64)rect = (100,1,421,378)cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')img = img*mask2[:,:,np.newaxis]plt.subplot(121), plt.imshow(img)plt.title("grabcut"), plt.xticks([]), plt.yticks([])plt.subplot(122)plt.imshow(cv2.cvtColor(cv2.imread('statue_small.jpg'), cv2.COLOR_BGR2RGB))plt.title("original"), plt.xticks([]), plt.yticks([])plt.show()

输出:

2:使用分水岭算法进行图像分割

import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('1.png')gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)# noise removalkernel = np.ones((3,3),np.uint8)opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)# sure background areasure_bg = cv2.dilate(opening,kernel,iterations=3)# Finding sure foreground areadist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)ret, sure_fg = cv2.threshold(dist_transform,0.7*dist_transform.max(),255,0)# Finding unknown regionsure_fg = np.uint8(sure_fg)unknown = cv2.subtract(sure_bg,sure_fg)# Marker labellingret, markers = cv2.connectedComponents(sure_fg)# Add one to all labels so that sure background is not 0, but 1markers = markers+1# Now, mark the region of unknown with zeromarkers[unknown==255] = 0markers = cv2.watershed(img,markers)img[markers == -1] = [255,0,0]plt.imshow(img)plt.show()

输出:

3:使用普通摄像头进行深度估计

import numpy as npimport cv2l_camera = cv2.VideoCapture(0)r_camera = cv2.VideoCapture(1)# create windowscv2.namedWindow('left_Webcam', cv2.WINDOW_NORMAL)cv2.namedWindow('right_Webcam', cv2.WINDOW_NORMAL)cv2.namedWindow('disparity', cv2.WINDOW_NORMAL)blockSize = 40while(cv2.waitKey(1) & 0xFF != ord('q')):    ret1, left_frame = l_camera.read()    ret2, right_frame = r_camera.read()        # our operations on the frame come here    gray_left = cv2.cvtColor(left_frame, cv2.COLOR_BGR2GRAY)    gray_right = cv2.cvtColor(right_frame, cv2.COLOR_BGR2GRAY)    cv2.imshow('left_Webcam', gray_left)    cv2.imshow('right_Webcam', gray_right)    stereo = cv2.StereoSGBM_create(minDisparity=1,        numDisparities=16,        blockSize=15,        #uniquenessRatio = 10,        speckleWindowSize = 10,        speckleRange = 32,        disp12MaxDiff = 1,        P1 = 8*3*blockSize**2,        P2 = 32*3*blockSize**2)    disparity = stereo.compute(gray_left, gray_right)    disparity = cv2.normalize(disparity, disparity, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)    cv2.imshow('disparity', disparity)# When everything done, release the capturecamera.release()cv2.destroyAllWindows()

输出:因为电脑上没有两个摄像头就没有进行试验

你可能感兴趣的文章
在编写python代码时,小白最容易犯的十几个错误 ! ...
查看>>
为什么存储器会成为阻碍AI发展的难题?
查看>>
好程序员分享居中一个float元素
查看>>
[雪峰磁针石博客]pyspark工具机器学习(自然语言处理和推荐系统)1数据演进 ...
查看>>
xttdriver.pl
查看>>
Pyhanlp自然语言处理中的新词识别
查看>>
书籍:Python Testing Cookbook, 2nd Edition - 2018.pdf python测试cookbook...
查看>>
第二十一章:变换(六)
查看>>
[New Feature]OSS支持设置Bucket 服务端默认加密方式
查看>>
windows下出现Cannot find module 'node-sass' 解决办法
查看>>
如何使用python分析CPU使用情况? 大概是这样吧
查看>>
你如何制定一份可实施的2019年大数据学习计划? ...
查看>>
阿里云RPA(机器人流程自动化)干货系列之六:客户端安装及激活 ...
查看>>
[设计] 地铁站点主题色的配色
查看>>
Android——实现m3u8视频缓存
查看>>
Android——各种动画Drawable
查看>>
Android——仿美团商品详情页折叠效果
查看>>
Android——ListView中getChildAt(index)的使用注意事项
查看>>
Gradle for Android(一)——初识Gradle
查看>>
Gradle for Android(六)——测试
查看>>