在opencvsharp中很多api的寫法跟c++中有所不同不同,比如在霍夫直線檢測cv2.houghlinesp這個api中返回的是乙個linesegmentpoint,而非乙個vec4i的陣列;
所以首先建立乙個linesegmentpoint型別的陣列作為接收,再呼叫cv2.houghlinesp這個函式
houghlines(inputarrayimage, doublerho, doubletheta, intthreshold, doublesrn= 0, doublestn= 0);
rho: 線段以畫素為單位的距離精度,double型別的,推薦用1.0
threshod: 累加平面的閾值引數,int型別,超過設定閾值才被檢測出線段,值越大,基本上意味著檢出的線段越長,檢出的線段個數越少。
srn:線段以畫素為單位的最小長度
stn:同一方向上兩條線段判定為一條線段的最大允許間隔(斷裂),超過了設定值,則把兩條線段當成一條線段,值越大,允許線段上的斷裂越大,越有可能檢出潛在的直線段
linesegmentpoint linesegmentpoint; //建立接收陣列
linesegmentpoint = cv2.houghlinesp(gray, 1.0, cv2.pi/180,200,100,300);//進行霍夫變換直線檢測
在陣列linesegmentpoint中可以列印下可以看到每個陣列的元素其實是包含線段的兩個端點,這樣就可以畫出直線
for (int i = 0; i < linesegmentpoint.length; i++)
列印結果:
(x:35 y:126)
(x:54 y:483)
(x:37 y:124)
(x:298 y:128)
(x:611 y:429)
(x:616 y:137)
(x:72 y:483)
(x:612 y:427)
(x:403 y:129)
(x:610 y:129)
接下來再將陣列中的所有元素繪製成線段就可以看到結果:
cv2.cvtcolor(gray, gray, colorconversioncodes.gray2bgr);
for (int i = 0; i < linesegmentpoint.length; i++)
下面是乙個例項:
mat src = new mat(@"d:\baidunetdiskdownload\電視.jpg", imreadmodes.color);
cv2.pyrdown(src, src);
cv2.resize(src, src, new size(src.width / 3, src.height / 3));//or
src, new size(0, 0), 1.0f / 3.0f, 1.0f / 3.0f);
cv2.imshow("src", src);
mat gray = new mat();
cv2.cvtcolor(src, gray, colorconversioncodes.bgr2gray);
cv2.threshold(gray, gray, 100, 255, thresholdtypes.binary);//二值化
mat stelem = cv2.getstructuringelement(morphshapes.rect, new size(7, 7));
cv2.morphologyex(gray, gray, morphtypes.open, stelem, new point(-1, -1), 3);//來三次次開操作把無關點濾掉
cv2.morphologyex(gray, gray, morphtypes.dilate, stelem);//膨脹擴大下範圍
cv2.imshow("binary", gray);
cv2.canny(gray, gray, 20, 50,3);
gray, colorconversioncodes.gray2bgr);
linesegmentpoint linesegmentpoint;
linesegmentpoint = cv2.houghlinesp(gray, 1.0, cv2.pi/180,200,100,300);
for (int i = 0; i < linesegmentpoint.length; i++)
cv2.cvtcolor(gray, gray, colorconversioncodes.gray2bgr);
for (int i = 0; i < linesegmentpoint.length; i++)
cv2.imshow("dst", gray);
cv2.waitkey();
顯示結果:
C 中OpenCVSharp實現輪廓檢測
opencv提供了函式 findcontours 用於對物體輪廓進行檢測,該函式實現演算法是由s.suzuki k.abe於1985年發表的。opencvsharp封裝了這個函式,有2個引數 contours,hierarchy 要做特別的說明。public static void findcont...
python中關於Opencv中關於矩形的函式總結
最近處理影象,以前用的都是matlab,現在入手python比較慢,這幾天看到了很多命名和功能相似的函式,作個記錄總結一下 只是為了能夠看下函式知道它是做什麼的,因此不會對其用法說得面面俱到。看到乙個文章講得清晰詳實,分享一下 功能 計算輪廓內的面積 示例 輸入為乙個點集 contours 0 為前...
js中關於時間
1 獲取當前時間 var mydate new date mydate.getyear 獲取當前年份 2位 mydate.getfullyear 獲取完整的年份 4位,1970 mydate.getmonth 獲取當前月份 0 11,0代表1月 mydate.getdate 獲取當前日 1 31 m...