<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
原圖:
整幅圖採用一個閾值,與圖片的每一個畫素灰度進行比較,重新賦值;
import cv2 import matplotlib.pyplot as plt #設定閾值 thresh=130 #載入原圖,並轉化為灰度影象 img_original=cv2.imread(r'E:pypython3.7test2test14yuzhicell.png',0) img_original=cv2.resize(img_original,(0,0),fx=0.3,fy=0.3) #採用5種閾值型別(thresholding type)分割影象 retval1,img_binary=cv2.threshold(img_original,thresh,255,cv2.THRESH_BINARY) retval2,img_binary_invertion=cv2.threshold(img_original,thresh,255,cv2.THRESH_BINARY_INV) retval3,img_trunc=cv2.threshold(img_original,thresh,255,cv2.THRESH_TRUNC) retval4,img_tozero=cv2.threshold(img_original,thresh,255,cv2.THRESH_TOZERO) retval5,img_tozero_inversion=cv2.threshold(img_original,thresh,255,cv2.THRESH_TOZERO_INV) #採用plt.imshow()顯示影象 imgs=[img_original,img_binary,img_binary_invertion,img_trunc,img_tozero,img_tozero_inversion] titles=['original','binary','binary_inv','trunc','tozero','tozero_inv'] for i in range(6): plt.subplot(2,3,i+1) plt.imshow(imgs[i],'gray') plt.title(titles[i]) plt.xticks([]) plt.yticks([]) plt.show()
程式碼如下(範例):
import cv2 import numpy as np import matplotlib.pyplot as plt #載入原圖,轉化為灰度影象,並通過cv2.resize()等比調整影象大小 img_original=cv2.imread(r'E:pypython3.7test2test14yuzhicell.png',0) img_original=cv2.resize(img_original,(0,0),fx=0.3,fy=0.3) #初始化閾值,定義全域性變數imgs thresh=130 imgs=0 #建立滑動條回撥函數,引數thresh為滑動條對應位置的數值 def threshold_segmentation(thresh): #採用5種閾值型別(thresholding type)分割影象 retval1,img_binary=cv2.threshold(img_original,thresh,255,cv2.THRESH_BINARY) retval2,img_binary_invertion=cv2.threshold(img_original,thresh,255,cv2.THRESH_BINARY_INV) retval3,img_trunc=cv2.threshold(img_original,thresh,255,cv2.THRESH_TRUNC) retval4,img_tozero=cv2.threshold(img_original,thresh,255,cv2.THRESH_TOZERO) retval5,img_tozero_inversion=cv2.threshold(img_original,thresh,255,cv2.THRESH_TOZERO_INV) #由於cv2.imshow()顯示的是多維陣列(ndarray),因此我們通過np.hstack(陣列水平拼接) #和np.vstack(豎直拼接)拼接陣列,達到同時顯示多幅圖的目的 img1=np.hstack([img_original,img_binary,img_binary_invertion]) img2=np.hstack([img_trunc,img_tozero,img_tozero_inversion]) global imgs imgs=np.vstack([img1,img2]) #新建視窗 cv2.namedWindow('Images') #新建滑動條,初始位置為130 cv2.createTrackbar('threshold value','Images',130,255,threshold_segmentation) #第一次呼叫函數 threshold_segmentation(thresh) #顯示影象 while(1): cv2.imshow('Images',imgs) if cv2.waitKey(1)==ord('q'): break cv2.destroyAllWindows()
程式碼如下(範例):
import cv2 import matplotlib.pyplot as plt #載入原圖 img_original=cv2.imread(r'E:pypython3.7test2test14yuzhicell.png',0) #全域性閾值分割 retval,img_global=cv2.threshold(img_original,130,255,cv2.THRESH_BINARY) #自適應閾值分割 img_ada_mean=cv2.adaptiveThreshold(img_original,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,3) img_ada_gaussian=cv2.adaptiveThreshold(img_original,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,15,3) imgs=[img_original,img_global,img_ada_mean,img_ada_gaussian] titles=['Original Image','Global Thresholding(130)','Adaptive Mean','Adaptive Guassian',] #顯示圖片 for i in range(4): plt.subplot(2,2,i+1) plt.imshow(imgs[i],'gray') plt.title(titles[i]) plt.xticks([]) plt.yticks([]) plt.show()
程式碼如下(範例):
import cv2 import matplotlib.pyplot as plt #載入原圖 img_original=cv2.imread(r'E:pypython3.7test2test14yuzhicell.png',0) #高斯濾波 img_blur=cv2.GaussianBlur(img_original,(13,13),13) #根據情況修改引數 #自適應閾值分割 img_thresh=cv2.adaptiveThreshold(img_original,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,15,3) img_thresh_blur=cv2.adaptiveThreshold(img_blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,15,3) #顯示影象 imgs=[img_thresh,img_thresh_blur] titles=['img_thresh','img_thresh_blur'] for i in range(2): plt.subplot(1,2,i+1) plt.imshow(imgs[i],'gray') plt.title(titles[i]) plt.xticks([]) plt.yticks([]) plt.show()
1.cv2.threshold(src, thresh, maxval, type)
引數:
src:輸入的影象
thresh:影象分割所用的閾值(threshold value)
maxval:當閾值型別(thresholding type)採用cv2.THRESH_BINARY和cv2.THRESH_BINARY_INV時畫素點被賦予的新值
type:介紹6種型別:
cv2.THRESH_BINARY(當影象某點畫素值大於thresh(閾值)時賦予maxval,反之為0。注:最常用)
cv2.THRESH_BINARY_INV(當影象某點畫素值小於thresh時賦予maxval,反之為0)
cv2.THRESH_TRUNC(當影象某點畫素值大於thresh時賦予thresh,反之不變。注:雖然maxval沒用了,但是呼叫函數不能省略)
cv2.THRESH_TOZERO(當影象某點畫素值小於thresh時賦予0,反之不變。注:同上)
cv2.THRESH_TOZERO_INV(當影象某點畫素值大於thresh時賦予0,反之不變。注:同上)
cv2.THRESH_OTSU(該方法自動尋找最優閾值,並返回給retval,見下文)
返回值:
retval:設定的thresh值,或者是通過cv2.THRESH_OTSU算出的最優閾值
dst:閾值分割後的影象
以上就是Python+OpenCV實現閾值分割的方法詳解的詳細內容,更多關於Python OpenCV閾值分割的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45