OpenCV圖像處理中常用函數匯總(1)


 1 //俗話說:好記性不如爛筆頭
 2 //用到opencv 中的函數時往往會一時記不起這個函數的具體參數怎么設置,故在此將常用函數做一匯總;
 3 
 4 Mat srcImage = imread("C:/Users/Administrator/Desktop/車牌識別/車牌圖像庫/1.jpg");//讀入圖像函數
 5 
 6 imshow("原圖",srcImage);//顯示圖像函數
 7 
 8 imwrite("圖3.jpg",imageRIO);//保存圖像函數
 9 
10 Mat imageRIO = srcImage(Rect(50,50,100,000));//感興趣區域函數
11 
12 cvtColor(srcImage,dstImage,CV_BGR2GRAY);//圖像灰度化
13 
14 
15 //邊緣檢測 Sobel Laplacian Canny 其中Canny算子只能處理(8位)灰度圖,其余兩種8位32位都可以
16 Mat grad_x,grad_y;
17 Sobel(imgGray,grad_x,CV_8U,1,0,3,1,1);//X方向上的Sobel算子檢測,其中3,1,0都是默認值
18 
19 Sobel(imgGray,grad_y,CV_8U,0,1,3,1,0);//Y方向上的Sobel算子檢測,其中3,1,0都是默認值
20 
21 addWeighted(grad_x,0.5,grad_y,0.5,0,dstImage);//合並梯度
22 
23 Laplacian(imgGray,dstImage,CV_8U);
24 
25 Canny(imgGray,dstImage,50,200,3);//50和200表示第一個滯后性閾值和第二個滯后性閾值,較小者用於邊緣連接,較大者控制強邊緣的初始段,達閾值opnecv推薦為小閾值的3倍;
26 //3表示應用的Sobel算子的孔徑大小 有默認值為3;
27 
28 // 尋找輪廓 只處理8位 即灰度圖像
29 vector<vector<Point>> contours;
30 findContours(imgGray,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
31 drawContours(dstImage,contours,-1,Scalar(0),3);
32 imshow("輪廓圖",dstImage);
33 
34 
35 //閾值化操作
36 threshold(srcImage,dstImage,100,255,3);
37 imshow("固定閾值化圖像",dstImage);
38 adaptiveThreshold(imgGray,dstImage,255,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,3,1);
39 imshow("自適應閾值化圖像",dstImage);
40 
41 
42 // resize函數實現
43 resize(srcImage,dstImage,Size(),0.5,0.5);//縮小為一半
44 resize(srcImage,dstImage,Size(),2,2);//放大2倍
45 resize(srcImage,dstImage,Size(srcImage.cols*3,srcImage.rows*3));//放大3倍
46 
47 
48 // 金字塔函數實現
49 pyrUp(srcImage,dstImage,Size(srcImage.cols*2,srcImage.rows*2));// 放大2倍
50 pyrDown(srcImage,dstImage,Size(srcImage.cols/2,srcImage.rows/2));// 縮小2倍
51 
52 //漫水填充算法
53 Rect ccomp;
54 floodFill(srcImage,Point(50,300),Scalar(155,255,55),&ccomp,Scalar(20,20,20),Scalar(20,20,20));
55 
56 //膨脹腐蝕
57 Mat element = getStructuringElement(MORPH_RECT,Size(15,15));
58 erode(srcImage,dstImage,element);//腐蝕函數
59 dilate(srcImage,dstImage,element);//膨脹函數
60 
61 morphologyEx(g_bgrImage,g_bgrImage, MORPH_CLOSE, element);//閉運算
62 
63 morphologyEx(g_bgrImage,g_bgrImage, MORPH_OPEN, element);//開運算
64 
65 
66 //濾波
67 boxFilter(srcImage,dstImage,-1,Size(3,3));
68 imshow("方框濾波圖",dstImage);
69 
70 blur(srcImage,dstImage,Size(3,3));
71 imshow("均值濾波圖",dstImage);
72 
73 GaussianBlur(srcImage,dstImage,Size(5,7),1,1);
74 imshow("高斯濾波圖",dstImage);
75 
76 medianBlur(image,out,7);//中值濾波,7為孔徑的線性尺寸
77 bilateralFilter(src,dst,d,sigmaColor,sigmaSpace);//雙邊濾波,d表示過濾過程中每個像素鄰域的直徑,sigmaColor顏色空間濾波器的sigma值,sigmaSpace表示坐標空間中濾波器的sigma值
78 bilateralFilter(image,out,25,25*2,25/2);
79 
80 //《未完待續》
81  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM