python-OpenCV-圖像處理基本操作_第1頁
python-OpenCV-圖像處理基本操作_第2頁
python-OpenCV-圖像處理基本操作_第3頁
python-OpenCV-圖像處理基本操作_第4頁
python-OpenCV-圖像處理基本操作_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

python-OpenCV-圖像處理基本操作?章?錄前?隨著??智能的不斷發(fā)展,OpenCV這門技術也越來越重要,很多?都開啟了學習OpenCV,本?就介紹了OpenCV圖像處理基本操作的基礎內容。?、圖像處理基本操作importcv2注:下述的代碼運?之前,?先需要導?cv2模塊,為了?便理解,我們在這?函數(shù)的前綴都使?“cv2.”表?1.讀取圖?(?持各種靜態(tài)圖像格式)retavl=cv2.imread(filename[,flags])·retavl返回值,其值是讀取到的圖像·filename讀取到的圖像完整名·flags讀取標記(讀取類型)2.顯?圖?None=Window(winname)#創(chuàng)建指定名稱窗?None=cv2.imshow(winname,mat)#顯?圖像retavl=cv2.WaitKey([delay])#等待按鍵None=cv2.destroyWindow(winname)#銷毀指定窗?None=cv2.destroyAllWindow()#銷毀所有窗?3.保存圖?retavl=cv2.imwrite([filename,img[,params]])?、圖像基本表??法1.遍歷像素點foriinrange():2.訪問像素點1.numpy.arrayimg.item()img.itemset()2.ROI感興趣區(qū)域roi=img[:,:]3.通道操作1.通過索引拆分b=img[:,:,0]g=img[:,:,1]r=img[:,:,2]2.通過函數(shù)拆分·split拆分圖像的通道為B,G,R(三原?:藍綠紅)b,g,r=cv2.split(img)3.通道合并拆分逆過程將三個通道的灰度圖像構成?幅彩圖bgr=cv2.merge([b,g,r])rgb=cv2.merge([r,g,b])4.獲取圖像屬性·shape彩圖返回:?/列/通道數(shù);?值圖/灰度圖返回:?/列數(shù)?/列/通道數(shù)=img.shape·size返回像素數(shù)?:?/列/通道數(shù)?/列/通道數(shù)=img.size·dtype返回圖像的數(shù)據(jù)類型圖像的數(shù)據(jù)類型=img.dtype三、圖像運算1.圖像像素值加法運算計算結果=cv2.add(像素值a,像素值b[,掩模])·?"+"時將和?于255的值取模處理,取模后?于255的值變?,像素點變暗,圖像不?然。·?cv2.add()時將和?于255的值處理為飽和值255,像素值增?,圖像整體變量。2.圖像加權和(圖像混合作?)dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)上式理解:結果圖像=圖像1x系數(shù)1+圖像2x系數(shù)2+亮度調節(jié)(gamma可以是零,不能省略)3.按位邏輯運算·dst表?與輸出值具有相同??的array輸出值·src表?array或scalar類型的輸出值·mask表?可選操作掩碼,8位單通道array值1.按位與運算dst=cv2.bitwise_and(src1,src2[,mask]])#與運算2.按位或運算dst=cv2.bitwise_or(src1,src2[,mask]])#與運算3.按位異或運算dst=cv2.bitwise_xor(src1,src2[,mask]])#與運算4.按位取反運算(按位?運算)dst=cv2.bitwise_not(src1,src2[,mask]])#與運算5.圖像與數(shù)值的運算參與運算的兩個算?(參數(shù))既可以是兩幅圖像,也可以是?幅圖像與?個數(shù)值img=np.ones((4,4),dtype=np.uint8)*3#?成4x4的數(shù)值為3的矩陣4.掩模mask=np.zeros((weight,hight),dtype=np.uint8)#?成weightxhight的數(shù)值為0的矩陣mask[:,:]=2555.圖像加密和解密(使?按位異或運算)1.加密對原始圖像與密鑰圖像進?按位異或2.解密對加密后的圖像與密鑰圖像再次進?按位異或四、?彩空間類型轉換1.類型轉換函數(shù)dst=cv2.vctColor(src,code[,dstCn])·dst輸出圖像·src原始輸?圖像·code?彩空間轉換碼·dstCn?標圖像的通道數(shù)2.HSV?彩空間·?調H取值范圍[0,360]·飽和度S取值范圍[0,1]·亮度V取值范圍[0,255]五、?何變換1.縮放dst=cv2.resize(src,dsize[,fx[,fy[,interpolation]]])·dst輸出的?標頭像·src需要縮放的原始圖像·dsize輸出圖像??·fx?平?向的縮放?例·fy垂直?向的縮放?例·interpolation插值?式常?插值?式:1.縮?圖形時:區(qū)域插值?式(INTER_AREA);2.放?圖像時:三次樣條插值(INTER_CUBIC)和雙線性插值(INTER_LINEAR)2.翻轉dst=cv2.flip(src,flipCode)·dst?標圖像·src原始圖像·flipCode旋轉類型flipCode參數(shù):0,正數(shù),負數(shù)0繞著x軸翻轉正數(shù)繞著x軸翻轉負數(shù)繞著x軸,y軸同時翻轉3.仿射dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])·dst?標圖像·src原始圖像·M變換矩陣·dsize輸出圖像的尺???·flags插值?式·borderMode邊類型·borderValue邊界值,默認是01.平移height,width=image.shape[:2]x=100y=200M=np.float32(image,M,(width,height))dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])2.旋轉M=cv2.getRotationMatrix2D(center,angle,scale)dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])3.更復雜的仿射變換M=cv2.getAffineTransform(src,dst)dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])4.透視dst=cv2.warpPerspective(src,M,dsize[,flags[,borderMode[,borderValue]]])·dst?標圖像·src原始圖像·M變換矩陣·dsize輸出圖像的尺???·flags插值?式·borderMode邊類型·borderValue邊界值,默認是05.重映射dst=cv2.remap(src,map1,map2,interpolation[,borderMode[,borderValue]])·dst?標圖像·src原始圖像·map11.(x,y)點的?個映射2.CV_16SC2,CV_32FC2類型(x,y)點的x值·map21.為空2.CV_16SC2,CV_32FC2類型(x,y)點的y值·Interpolation插值?式(不?持INTER_AREA)·borderMode邊界模式·borderValue邊界值,默認是0六、閾值處理1.threshold函數(shù)retval,dst=cv2.threshold(src,thresh,maxval,type)·retval返回的閾值·dst閾值分割結果圖像·src進?閾值分割的圖像·thresh要設定的閾值·maxval當type參數(shù)為THRESH_BINARY或者THRESH_BINARY—_INV類型時,需要設定的最?值·type閾值分割的類型1.?值化閾值處理retval,dst=cv2.threshold(src,thresh,maxval,THRESH_BINARY)2.反?值化處理retval,dst=cv2.threshold(src,thresh,maxval,THRESH_BINARY_INV)3.截斷閾值化處理retval,dst=cv2.threshold(src,thresh,maxval,THRESH_TRUNC)4.超閾值化處理retval,dst=cv2.threshold(src,thresh,maxval,THRESH_TOZERO_INV)5.低閾值化處理retval,dst=cv2.threshold(src,thresh,maxval,THRESH_TOZERO)2.?適應閾值處理dst=cv.addtiveThreshold(src,maxValue,adaptiveMethod,thresholdType,blockSize,C)·dst閾值分割結果圖像·src進?閾值分割的圖像·maxValue最?值·adaptiveMethod?適應?法·thresholdType閾值處理?式,該值必須是THRESH_BINARY或者THRESH_BINARY—_INV·blockSize塊??,通常為3,5,7·C常量?適應?法:**1.**cv2.ADAPTIVE_THRESH_MEAN_C**2.**cv2.ADAPTIVE_THRESH_GAUSSIAN_C3.Otsu處理cv2.THRESH_OTSUt,otsu=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)七、圖像平滑處理1.均值濾波dst=cv2.blur(src,ksize,anchor,borderType)常?形式:dst=cv2.blur(src,ksize)·dst返回值·src進?處理的圖像·ksize濾波核的??·anchor錨點,默認值(-1,-1)·borderType邊界樣式2.?框濾波dst=cv2.boxFilter(src,ddepth,ksize,anchor,normalize,borderType)常?形式:dst=cv2.boxFilter(src,ddepth,ksize)·dst返回值·src進?處理的圖像·ddepth處理結果圖像的深度,?般-1·ksize濾波核的??·anchor錨點,默認值(-1,-1)·normalize歸?化處理(1)/不需歸?化處理(0)·borderType邊界樣式3.?斯濾波邊緣模糊虛化dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)常?形式:dst=cv2.GaussianBlur(src,ksize,0,0)·dst返回值·src進?處理的圖像·ksize濾波核的??·sigmaX卷積核在?平?向上的標準差·sigmaY卷積核在垂直?向上的標準差·borderType邊界樣式4.中值濾波dst=cv2.medianBlur(src,ksize)·dst返回值·src進?處理的圖像·ksize濾波核的??5.雙邊濾波邊緣得到保留dst=cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)·dst返回值·src進?處理的圖像·d在濾波時選取的空間距離參數(shù)·sigmaColor在濾波時選取的顏?差值范圍·sigmaSpace坐標空間中的sigma值·borderType邊界樣式6.2D卷積dst=cv2.filter2D(src,ddepth,kernel,anchor,delta,borderType)常?形式:dst=cv2.filter2D(src,ddepth,kernel)·dst返回值·src進?處理的圖像·ddepth處理結果圖像的深度,?般-1·kernel卷積核·anchor錨點,默認值(-1,-1)·delta修正值·borderType邊界樣式?、形態(tài)學操作1.腐蝕將圖像的邊界點消除,向內收縮;去除噪聲、元素分割dst=cv2.erode(src,kernel[,anchor[,iterations[,borderType[,borderValue]]]])·dst返回值·src進?處理的圖像·kernel卷積核·anchor錨點,默認值(-1,-1)·iterations腐蝕操作迭代的次數(shù)·borderType邊界樣式·borderValue邊界值2.膨脹對圖像的邊界進?擴張dst=cv2.dilate(src,kernel[,anchor[,iterations[,borderType[,borderValue]]]])3.通?形態(tài)學函數(shù)dst=cv2.morphologyEx(src,op,kernel[,anchor[,iterations[,borderType[,borderValue]]]])·op操作類型4.核函數(shù)dst=cv2.getStructuringElement(shape,ksize[,anchor])·shape形狀類型·ksize結構元素的??·anchor錨點,默認值(-1,-1)九、圖像梯度1.Sobel算?及函數(shù)使?dst=cv2.Sobel(src,ddepth,dx,dy[,scale[,delta[,borderType]]]])·dst?標圖像·src原始圖像·ddepth處理結果圖像的深度,?般-1·dxx?向上的求導階數(shù)·dyy?向上的求導階數(shù)·ksizeSobel核的??·scale計算導數(shù)值·delta加在?標圖像dst上的值,默認0·borderType邊界樣式2.Scharr算?及函數(shù)使?dst=cv2.Scharr(src,ddepth,dx,dy[,scale[,delta[,borderType]]]])3.Laplacian算?及函數(shù)使?dst=cv2.Laplacian(src,ddepth,ksize[,scale[,delta[,borderType]]]])?、Canny邊緣檢測edges=cv.Canny(image,threshold1,threshold2[,apertureSize[,L2gradient]])·edges計算得到的邊緣圖像·image8位輸?圖像·threshold處理過程中的閾值·apertureSizeSobel算?的孔徑??·L2gradient計算圖像梯度幅度的標識??、圖像?字塔1.pyrDown函數(shù)及使?dst=cv2.pyrDown(src[,dstsize[,borderType]])·dst?標圖像·src原始圖像·dstsize?標圖像??·borderType邊界類型2.pyrUp函數(shù)及使?dst=cv2.pyrUp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論