現在比如說我有這麼一張圖:
我想要從中提取出"圓"的部分,那該怎麼做呢?用霍夫圓變換?no,萬一它不是乙個標準的圓呢?所以,這裡採用輪廓發現的方法來查詢"圓"。
解決思路:
1、二值化;
2、形態學操作(開運算+閉運算);
3、輪廓點查詢;
4、座標查詢。
首先將影象進行二值化,輪廓點查詢需要二值化影象。先使用閉操作去除最上面那一大塊中的白色小點,這可以把它叫做聯通。再使用開操作去除其餘的黑色小點。這樣操作之後我們就可以進行輪廓點查詢了,算出該區域的面積,如果面積<100(這個值可以根據情況取),則不會繪製輪廓。之後找出最小外接矩形,把它的長寬進行相除,如果該比例在1上下左右進行浮動,則被認為是該「圓」。
**:
#include#include#includeusing namespace cv;
using namespace std;
mat src, binary, close_dst,open_dst;
int main(int argc, char** argv)
imshow("input image", src);
//二值化操作
threshold(src, binary, 0, 255, thresh_binary | thresh_otsu);
bitwise_not(binary, binary, mat());
imshow("binary image",binary);
/*---------------------形態學操作-------------------------*/
mat kernel = getstructuringelement(morph_rect, size(3, 3), point(-1, -1));
//閉操作,把中間的細小點聯通起來
morphologyex(binary, close_dst, morph_close, kernel, point(-1, -1));
imshow("close image", close_dst);
//開操作,去除多餘的點
kernel = getstructuringelement(morph_rect, size(7, 7), point(-1, -1));
morphologyex(binary, open_dst, morph_open, kernel, point(-1, -1));
imshow("open image", open_dst);
/*---------------------獲取物件輪廓-------------------------*/
mat dst = mat::zeros(src.size(), cv_8uc3);
vector > contours;
vectorhierachy;
point cc;
mat result_img = src.clone();
cvtcolor(result_img, result_img, cv_gray2bgr);
//rng rng((int)time(0));
for (size_t t = 0; t < contours.size(); t++) }
imshow("contours image", dst);
imshow("result image", result_img);
waitkey(0);
return 0;
}
執行結果:輸入:
進行二值化後的結果:
閉操作之後的結果:
可以看到,黑色小點被去除了。
開操作的結果:
這裡比較好,只進行了開操作就把其餘的小塊區域給去除了。
輪廓發現:
最後在原圖上顯示圓點座標:
OpenCv C 小案例實戰 切邊 一
假如說現在有這麼一張如下 現在我想要去掉這張圖外面的白色區域,只留下紅色線框以內的部分。最終效果如圖所示 放上 include include includeusing namespace cv using namespace std mat src,dst,gray src int current...
OpenCv C 小案例實戰 切邊 二
接上篇文章 一般的,乙個掃瞄的檔案是不可能完完全全擺正了的。它多多少少會有些傾斜。現在有如下 它逆時針進行了旋轉,那麼想要把多餘的白邊去掉且擺正應該怎麼做呢?步驟如下 1 邊緣檢測 2 找出輪廓 3 找出最小外接矩形,獲得旋轉的角度 4 根據旋轉的角度進行仿射變換 5 按切邊的操作進行 沒有用到的已...
實戰 python爬蟲經典小案例彙總
所有例項 github位址 開始最好模仿,不要自己寫,錯了找不到原因 應用 搶票,投票,報告分析,飲食地圖,輿情監控 儲存資料 的方法大概可以分為幾類 儲存文字 儲存二進位制檔案 包括 儲存到資料庫 1.首先是獲取目標頁面 2.解析獲取的網頁中的元素,唯一定位,取得自己想要的 借助各種庫工具,分析頁...