我有圖像,我要旋轉此圖像,像這樣: 旋轉必須是自動的。在另一方面旋轉角度必須被計算。在圖像上查找區域 - 自動旋轉圖像OpenCv
[1 - 圖片]
有什麼想法就OpenCV的這種旋轉?
我該如何提取這個圖像上的一個小矩形?像這樣: (我用紅色標出一些區域)
[2 - 圖片]
有什麼想法從OpenCV的這個圖像中提取該區域?
我有圖像,我要旋轉此圖像,像這樣: 旋轉必須是自動的。在另一方面旋轉角度必須被計算。在圖像上查找區域 - 自動旋轉圖像OpenCv
[1 - 圖片]
有什麼想法就OpenCV的這種旋轉?
我該如何提取這個圖像上的一個小矩形?像這樣: (我用紅色標出一些區域)
[2 - 圖片]
有什麼想法從OpenCV的這個圖像中提取該區域?
我不知道openCV,但是你添加了C#和C++標籤,這讓我認爲你會接受一種可以用這些語言實現的算法。
要回答你的第一個問題:
如果您的圖片都是類似於你提供,你可以做這樣的事情的人(這些不一定是連續的步驟,它們的編號只是爲了便於參考):
轉換爲黑白&白沿黑(你可以這樣做只是概念上的,如果你願意,通過像素值與閾值比較,在下面)
旅遊輪廓在垂直,水平和對角線單像素步驟
記住您在旅行時的N對座標,以便N低於您圖像的直線的預期最小長度(以像素爲單位)(您必須調N:過長給你的數據太少,時間太短給你太多的噪音)
從目前的點的座標和點N步回來,計算m
和q
y = m x + q
如果abs(Δx) ≤ abs(Δy)
或m'
和否則爲q'
,x = m' y + q'
,並製作4個直方圖,其中需要的分辨率爲
平滑比特的直方圖(例如,通過添加到每個信道的比特其相鄰信道的值的)
找到的m
,m'
,q
和q'
的最大值,和,除去後圍繞最大值q
和q'
,其他2(局部)最大值q
和q'
;這些將是您對矩形4條邊界線方程參數的估計,其中m ≅ -m'
(取決於您所需的最終結果,您可以使用m
,m'
或例如,(m-m')/2
)
找到的旋轉或將你的矩形到期望的位置(例如,上面的兩個線的交點可能必須被變換到某個位置)的仿射變換,並將其應用
點2通過在每個步驟中找到圍繞當前像素的循環探索中的8個可能中的第一個黑色像素,其以前一步驟的像素結束。例如,如果您的最後一步位於NE(東北)方向,並且您沿着輪廓順時針行駛,則按以下順序瀏覽周圍環境:NW,N,NE,E,SE,S,SW(缺失W因爲如果它是黑色的,它會在上一步中被選中)。您可以通過行掃描找到起始像素(這將使您在E方向到達,或者在反向行掃描時W方向到達)。
您還應計算輪廓的長度(以步爲單位)。如果它比你期望的要短得多,你應該丟棄它並再次嘗試,直到找到「真實」的輪廓。
你的第二個問題真的不清楚 –
做一些關於霍夫變換的閱讀。這是一種檢測線條的算法。一旦你有線,根據方向對它們進行分類,並選擇線條最多的兩個正交方位。 – DCS