空间皮肤代码_不废话,看我20行代码搞定色块提取与定位…….
點(diǎn)擊上方藍(lán)字關(guān)注我們
微信公眾號(hào):OpenCV學(xué)堂
關(guān)注獲取更多計(jì)算機(jī)視覺(jué)與深度學(xué)習(xí)知識(shí)
問(wèn)題來(lái)由
這個(gè)問(wèn)題是誰(shuí)問(wèn)我的我已經(jīng)不記得了,剛開(kāi)始的時(shí)候他發(fā)了這張圖像給我,讓我給他看一下,我當(dāng)時(shí)告訴他轉(zhuǎn)換一下色彩空間提取就好啦,后來(lái)我記得他在微信上有問(wèn)了我一次,今天我整理文件看到這張圖又想起了,感覺(jué)他問(wèn)了我好幾次我都沒(méi)回復(fù)挺不意思的,但是我實(shí)在不知道他是誰(shuí)了,微信上消息太多,早已經(jīng)把他淹沒(méi)了,加之我記憶力退化嚴(yán)重,思來(lái)想去只好寫(xiě)篇文章告訴他,我回答了!如果看完感覺(jué)對(duì)你也有用,點(diǎn)在看支持即可!
先看看他發(fā)我的圖像文件吧
在來(lái)說(shuō)說(shuō)他的需求:
找到途中全部青色的區(qū)域,檢測(cè)出來(lái),繪制中心點(diǎn)!他用霍夫變換,結(jié)果直接翻車了,原因其實(shí)我很理解,這個(gè)圖有很多梯度干擾,噪聲干擾,用了肯定翻車!然后他就問(wèn)我怎么辦?
解題思路
直接轉(zhuǎn)換到HSV色彩空間,得到如下結(jié)果:
然后我選擇5x5的開(kāi)操作,完成之后得到
使用OpenCV輪廓發(fā)現(xiàn),對(duì)輪廓擬合圓,求的圓心坐標(biāo)得到輸出結(jié)果如下:
怎么樣,效果好嗎?
代碼實(shí)現(xiàn)
上述步驟的代碼演示,主要分為如下步驟
1.加載圖像并轉(zhuǎn)換到HSV色彩空間,得到mask
2.根據(jù)mask二值圖像,進(jìn)行形體學(xué)處理
3.使用輪廓發(fā)現(xiàn),找到所有最外層輪廓
4.對(duì)輪廓進(jìn)行圓擬合,得到圓心與半徑,然后繪制
?代碼如下:
1#include?2#include?
3
4using?namespace?cv;
5using?namespace?std;
6
7int?main(int?argc,?char**?argv)?{
8????Mat?image?=?imread("D:/images/zsxq/zsxq_20.png");
9????imshow("input",?image);
10
11????//?色彩空間轉(zhuǎn)換
12????Mat?hsv,?mask;
13????cvtColor(image,?hsv,?COLOR_BGR2HSV);
14????inRange(hsv,?Scalar(40,43,?46),?Scalar(50,?255,?255),?mask);
15????imshow("mask",?mask);
16????imwrite("D:/mask.png",?mask);
17
18????//?形態(tài)學(xué)開(kāi)操作
19????Mat?se?=?getStructuringElement(MORPH_RECT,?Size(5,?5),?Point(-1,?-1));
20????morphologyEx(mask,?mask,?MORPH_OPEN,?se);
21????imshow("binary",?mask);
22????imwrite("D:/binary.png",?mask);
23
24????//?輪廓發(fā)現(xiàn)
25????vector<vector>?contours;26????vector?hiearchy;27????findContours(mask,?contours,?hiearchy,?RETR_EXTERNAL,?CHAIN_APPROX_SIMPLE);28????for?(int?i?=?0;?i?29????????//?圓擬合30????????RotatedRect?rrt?=?fitEllipse(contours[i]);31????????Point?ct?=?rrt.center;32????????int?h?=?rrt.size.height;33????????int?w?=?rrt.size.width;34????????printf("height?:?%d,?width?:?%d?\n",?h,?w);35????????circle(image,?ct,?2,?Scalar(0,?0,?255),?2,?8);36????????circle(image,?ct,?(h?+?w)?/?4,?Scalar(255,?0,?0),?2,?8,?0);37????}3839????//?顯示輸出40????imshow("result",?image);41????imwrite("D:/result.png",?image);42????waitKey(0);43????return?0;44}45
希望他會(huì)看到,如果看到給我留言知道一下!最后跟大家道歉一下,代碼超過(guò)20行了@_@!!!!
天下難事,必作于易
天下大事,必作于細(xì)
?推薦閱讀?
OpenCV4系統(tǒng)化學(xué)習(xí)路線圖-視頻版本!
OpenCV單應(yīng)性矩陣發(fā)現(xiàn)參數(shù)估算方法詳解
單應(yīng)性矩陣應(yīng)用-基于特征的圖像拼接
OpenCV圖像拼接改進(jìn)算法之完美拼接
OpenCV | 二值圖像分析的技巧都在這里
OpenCV二值圖像分析之形態(tài)學(xué)應(yīng)用技巧
圖像色彩空間與應(yīng)用轉(zhuǎn)換
五分鐘學(xué)會(huì)C++高效圖表繪制神器調(diào)用
沒(méi)想到圖像直方圖有這么多應(yīng)用場(chǎng)景
基于灰度共生矩陣(GLCM)的圖像紋理分析與提取
OpenCV中一個(gè)最容易搞錯(cuò)的形態(tài)學(xué)操作
OpenCV實(shí)現(xiàn)皮膚表面粗糙度3D顯示
解密 | OpenCV加載圖像大小是有限制的 ?
總結(jié)
以上是生活随笔為你收集整理的空间皮肤代码_不废话,看我20行代码搞定色块提取与定位…….的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: layui tree 加载慢_图片太多,
- 下一篇: 太太丘舍去_过中不至,太丘舍去,去后乃至