操作步驟:
1.讀取彩色影象,imread()
2.轉換為灰度影象,cvtcolor(src,dst,cv_bgr2gray)
3.轉換為二值影象,adaptivethreshold()
4,定義結構元素,getstructuringelement
5,形態學操作
**如下:
#include#includeusing namespace std;
using namespace cv;
int main()
namedwindow("input_image", window_normal);
imshow("input_image", src);
cvtcolor(src, gray_src, cv_bgr2gray);
imshow("gray_image", gray_src);
adaptivethreshold(gray_src, bin_src, 255, adaptive_thresh_mean_c, thresh_binary, 15, 2);
imshow("binary_image", bin_src);
mat kernel = getstructuringelement(morph_rect, size(3, 3), point(-1, -1));
mat temp;
erode(bin_src, temp, kernel);
dilate(temp, dst, kernel);
//morphologyex(bin_src, dst, cv_mop_open, kernel, point(-1, -1));
imshow("final", dst);
waitkey(0);
return 0;
}
效果圖:
為什麼會去除不掉呢,因為開操作是除掉黑色背景中的白色小塊,那麼解決該問題就有兩種方法:
1.用bitwise_not()將得到的二值影象反色,變成黑為背景白為前景。
2.將開操作變為閉操作。
**分別為:
#include#includeusing namespace std;
using namespace cv;
int main()
namedwindow("input_image", window_normal);
imshow("input_image", src);
cvtcolor(src, gray_src, cv_bgr2gray);
imshow("gray_image", gray_src);
adaptivethreshold(gray_src, bin_src, 255, adaptive_thresh_mean_c, thresh_binary, 15, 2);
bitwise_not(bin_src, bin_src);
imshow("binary_image", bin_src);
mat kernel = getstructuringelement(morph_rect, size(3, 3), point(-1, -1));
mat temp;
erode(bin_src, temp, kernel);
dilate(temp, dst, kernel);
//morphologyex(bin_src, dst, cv_mop_open, kernel, point(-1, -1));
imshow("final", dst);
waitkey(0);
return 0;
}
效果圖:
閉操作** :
#include#includeusing namespace std;
using namespace cv;
int main()
namedwindow("input_image", window_normal);
imshow("input_image", src);
cvtcolor(src, gray_src, cv_bgr2gray);
imshow("gray_image", gray_src);
adaptivethreshold(gray_src, bin_src, 255, adaptive_thresh_mean_c, thresh_binary, 15, 2);
/*bitwise_not(bin_src, bin_src);*/
imshow("binary_image", bin_src);
mat kernel = getstructuringelement(morph_rect, size(3, 3), point(-1, -1));
mat temp;
dilate(bin_src, temp, kernel);
erode(temp, dst, kernel);
//morphologyex(bin_src, dst, cv_mop_open, kernel, point(-1, -1));
imshow("final", dst);
waitkey(0);
return 0;
}
效果圖:
OPENCV去除小連通區域,去除孔洞
一 對於二值圖,0代表黑色,255代表白色。去除小連通區域與孔洞,小連通區域用8鄰域,孔洞用4鄰域。函式名字為 void removesmallregion mat src,mat dst,int arealimit,int checkmode,int neihbormode checkmode 0...
opencv車道線檢測
二值化 先變化為灰度圖,然後設定閾值直接變成二值化影象。形態學濾波 對二值化影象進行腐蝕,去除噪點,然後對影象進行膨脹,彌補對車道線的腐蝕。邊緣檢測 canny變化 sobel變化和laplacian變化中選擇了效果比較好的canny變化,三者在 中均可以使用,canny變化效果稍微好一點。按鍵控制...
PHP生成帶有干擾線的驗證碼,干擾點 字元傾斜
php生成驗證碼的類 本驗證碼類支援生成干擾點 干擾線等干擾畫素,還可以使字元傾斜。在類中你可以定義驗證碼寬度 高度 長度 傾斜角度等引數,後附有用法 class class authcode 生成驗證碼 private function imagecreate 干擾顏色 private funct...