日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android基于OpenCV實現霍夫直線檢測

瀏覽:236日期:2022-09-18 08:09:51
目錄霍夫直線檢測點和線的對偶性極坐標參數方程API操作效果霍夫直線檢測點和線的對偶性 圖像空間中的點,對應霍夫空間中的直線 圖像空間中的直線,對應霍夫空間中的點 共點的直線,在霍夫空間中對應的點在一條直線上 共線的點,在霍夫空間中對應的直線交于一點

Android基于OpenCV實現霍夫直線檢測

極坐標參數方程

對于平面中的一條直線,在笛卡爾坐標中,常見的有點斜式,兩點式兩種表示方法。然而在霍夫變換中,考慮的是另外一種表示方式:使用(r, theta)來表示一條直線。其中r為該直線到原點的距離,theta為該直線的垂線與x軸的夾角。如下圖所示:

Android基于OpenCV實現霍夫直線檢測

根據霍夫變換原理,利用極坐標形式表示直線時,在圖像空間中經過某一點的所有直線映射到參數空間中是一個正弦曲線。圖像空間中直線上的兩個點在參數空間中映射的兩條正弦曲線相交于一點。

Android基于OpenCV實現霍夫直線檢測

通過上述的變換過程,將圖像中的直線檢測轉換成了在參數空間中尋找某個點 通過的正線曲線最多的問題。由于在參數空間內的曲線是連續的,而在實際情況中圖像的像素是離散的,因此我們需要將參數空間的坐標軸進行離散化,用離散后的方格表示每一條正弦曲線。首先尋找符合條件的網格,之后尋找該網格對應的圖像空間中所有的點,這些點共同組成了原圖像中的直線。

由此可見,霍夫變換算法檢測圖像中的直線主要分為4個步驟

將參數空間的坐標軸離散化,例如theta=0,10,20……, r=0.1,0.2,0.3…… 將圖像中每個非0像素通過映射關系求取在參數空間通過的方格。 統計參數空間內每個方格出現的次數,選取次數大于某一閾值的方格作為表示直線的方格。 將參數空間中表示直線的方格的參數作為圖像中直線的參數。

霍夫檢測具有抗干擾能力強,對圖像中直線的殘缺部分、噪聲以及其它共存的非直線結構不敏感,能容忍特征邊界描述中的間隙,并且相對不受圖像噪聲影響等優點,但是霍夫變換的時間復雜度和空間復雜度都很高,并且檢測精度受參數離散間隔制約。離散間隔較大時會降低檢測精度,離散間隔較小時雖然能提高精度,但是會增加計算負擔,導致計算時間邊長

API

public static void HoughLines(Mat image, Mat lines, double rho, double theta, int threshold, double srn, double stn, double min_theta) 參數一:image,待檢測直線的原圖像,必須是CV_8U的單通道圖像. 參數二:lines,霍夫變換檢測到的直線輸出量,每一條直線都由兩個或者三個參數表示。第一個表示直線距離坐標原點的距離 ,第二個表示坐標原點到直線的垂線與x軸的夾角,若有第三個,則表示累加器的數值。

Android基于OpenCV實現霍夫直線檢測

參數三:rho,距離分辨率,以像素為單位,距離離散化時的單位長度 參數四:theta,角度分辨率,以弧度為單位,夾角離散化時的單位角度。 參數五:threshold,累加器的閾值,即參數空間中離散化后每個方格被通過的累計次數大于該閾值時將被識別為直線,否則不被識別為直線。 參數六:srn,對于多尺度霍夫變換算法中,該參數表示距離分辨率的除數,粗略的累加器距離分辨率是第三個參數rho,精確的累加器分辨率是rho/srn。這個參數必須是非負數,默認參數為0。 參數七:stn,對于多尺度霍夫變換算法中,該參數表示角度分辨率的除數,粗略的累加器距離分辨率是第四個參數rho,精確的累加器分辨率是rho/stn。這個參數必須是非負數,默認參數為0。當這個參數與第六個參數srn同時為0時,此函數表示的是標準霍夫變換。 參數八:min_theta,檢測直線的最小角度,默認參數為0。 參數九:max_theta,檢測直線的最大角度,默認參數為CV_PI,是OpenCV 4中的默認數值具體為3.1415926535897932384626433832795。

使用標準霍夫變換和多尺度霍夫變換函數HoughLins()提取直線時無法準確知道圖像中直線或者線段的長度,只能得到圖像中是否存在符合要求的直線以及直線的極坐標解析式。如果需要準確的定位圖像中線段的位置,HoughLins()函數便無法滿足需求。但是OpenCV 4提供的漸進概率式霍夫變換函數HoughLinesP()可以得到圖像中滿足條件的直線或者線段兩個端點的坐標,進而確定直線或者線段的位置。

public static void HoughLinesP(Mat image, Mat lines, double rho, double theta, int threshold, double minLineLength, double maxLineGap)

參數一:image,待檢測直線的原圖像,必須是CV_8U的單通道圖像.

參數二:lines,輸出線段。每條線由4元素表示。如下,分別代表每個線段的兩個端點

Android基于OpenCV實現霍夫直線檢測

參數三:rho,距離分辨率,以像素為單位,距離離散化時的單位長度 參數四:theta,角度分辨率,以弧度為單位,夾角離散化時的單位角度。 參數五:threshold,累加器的閾值,即參數空間中離散化后每個方格被通過的累計次數大于該閾值時將被識別為直線,否則不被識別為直線。該累積數越大,則得到的直線可能就越長。 參數六:minLineLength,表示可以檢測的最小線段長度,根據實際需要進行設置。 參數七:maxLineGap,表示線段之間的最大間隔像素,假設5表示小于5個像素的兩個相鄰線段可以連接起來。操作

package cn.onlyloveyd.demo.uiimport android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport androidx.databinding.DataBindingUtilimport cn.onlyloveyd.demo.Rimport cn.onlyloveyd.demo.databinding.ActivityHoughLineBindingimport cn.onlyloveyd.demo.ext.showMatimport org.opencv.android.Utilsimport org.opencv.core.Matimport org.opencv.core.Pointimport org.opencv.core.Scalarimport org.opencv.imgproc.Imgprocimport kotlin.math.cosimport kotlin.math.roundToIntimport kotlin.math.sin/** * 霍夫直線檢測 * author: yidong * 2020/7/18 */class HoughLineDetectActivity : AppCompatActivity() { private lateinit var mBinding: ActivityHoughLineBinding private lateinit var mGray: Mat private lateinit var mEdge: Mat override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mBinding = DataBindingUtil.setContentView(this, R.layout.activity_hough_line)mBinding.presenter = thismGray = Mat()mEdge = Mat()val bgr = Utils.loadResource(this, R.drawable.book)Imgproc.cvtColor(bgr, mGray, Imgproc.COLOR_BGR2GRAY)mBinding.ivLena.showMat(mGray)Imgproc.Canny(mGray, mEdge, 80.0, 150.0, 3, false) } override fun onDestroy() {mGray.release()mEdge.release()super.onDestroy() } fun doHoughLineDetect() {title = 'HoughLine'val lines = Mat()Imgproc.HoughLines(mEdge, lines, 1.0, Math.PI / 180.0, 150)val out = Mat.zeros(mGray.size(), mGray.type())val data = FloatArray(2)for (i in 0 until lines.rows()) { lines.get(i, 0, data) val rho = data[0] // 直線距離坐標原點的距離 val theta = data[1] // 直線過坐標原點垂線與x軸夾角 val a = cos(theta.toDouble()) //夾角的余弦值 val b = sin(theta.toDouble()) //夾角的正弦值 val x0 = a * rho //直線與過坐標原點的垂線的交點 val y0 = b * rho val pt1 = Point() val pt2 = Point() pt1.x = (x0 + 1000 * (-b)).roundToInt().toDouble() pt1.y = (y0 + 1000 * (a)).roundToInt().toDouble() pt2.x = (x0 - 1000 * (-b)).roundToInt().toDouble() pt2.y = (y0 - 1000 * (a)).roundToInt().toDouble() Imgproc.line(out, pt1, pt2, Scalar(255.0, 255.0, 255.0), 2, Imgproc.LINE_AA, 0)}mBinding.ivResult.showMat(out)out.release()lines.release() } fun doHoughLinePDetect() {title = 'HoughLineP'val lines = Mat()Imgproc.HoughLinesP(mEdge, lines, 1.0, Math.PI / 180.0, 100, 50.0, 10.0)val out = Mat.zeros(mGray.size(), mGray.type())for (i in 0 until lines.rows()) { val data = IntArray(4) lines.get(i, 0, data) val pt1 = Point(data[0].toDouble(), data[1].toDouble()) val pt2 = Point(data[2].toDouble(), data[3].toDouble()) Imgproc.line(out, pt1, pt2, Scalar(255.0, 255.0, 255.0), 2, Imgproc.LINE_AA, 0)}mBinding.ivResult.showMat(out)out.release()lines.release() }}效果

Android基于OpenCV實現霍夫直線檢測

Android基于OpenCV實現霍夫直線檢測

以上就是Android基于OpenCV實現霍夫直線檢測的詳細內容,更多關于Android OpenCV實現霍夫直線檢測的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99精品网站| 免费看的黄色欧美网站| 欧美三级第一页| 国产伦一区二区三区| 国产精品国产三级在线观看| 精品久久久网| 婷婷中文字幕一区| 亚洲免费观看高清完整版在线观| 99精品99| 青青草国产精品亚洲专区无| 精品午夜视频| 国产尤物精品| 欧美久久精品| 三级小说欧洲区亚洲区| 美女久久网站| 免费在线播放第一区高清av| 神马日本精品| 欧美精品三级在线| 亚洲a一区二区三区| 日韩精品国产欧美| 精品三级国产| 香蕉视频成人在线观看| 免费在线欧美黄色| 亚洲午夜一级| 国产亚洲精品美女久久| 久久精品高清| 国产日韩视频| 精品在线播放| 国产精品多人| 久久亚洲欧美| 日韩在线欧美| 日韩不卡一区二区| 99久久婷婷| 国产精品乱战久久久| 伊人久久大香线蕉av不卡| 久久国产乱子精品免费女| 久久人人88| 老牛国内精品亚洲成av人片 | 四虎国产精品免费观看| 在线亚洲精品| 亚洲伊人av| 欧美午夜三级| 国产视频一区欧美| 91一区二区| 欧美中文一区| 奶水喷射视频一区| 亚洲va中文在线播放免费| 久久精品72免费观看| 亚洲一区二区毛片| 精品亚洲精品| 日韩精品久久理论片| 中文在线一区| 成人久久久久| 大香伊人久久精品一区二区| 欧美天堂一区| 免费日韩一区二区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久中文在线| 日韩在线观看一区二区| 久久久成人网| 福利片在线一区二区| 日韩动漫一区| 亚洲影院天堂中文av色| 午夜精品网站| 亚洲人成在线网站| 精品一区二区男人吃奶| 欧美日韩伊人| 欧美在线黄色| 日本va欧美va瓶| 蜜臀久久99精品久久久画质超高清 | 免费亚洲婷婷| 日韩av在线免费观看不卡| 国产色综合网| 狠狠爱www人成狠狠爱综合网| 精品91福利视频| 国产精品白浆| 久久不见久久见免费视频7| 日本午夜精品久久久| 亚洲欧美在线综合| 亚洲精品观看| 免费看日韩精品| 日韩视频中文| 亚洲午夜视频| 欧美日韩色图| 亚洲欧美一区在线| 欧美影院三区| 欧美日韩国产免费观看| 亚洲综合日本| 亚洲久草在线| 7m精品国产导航在线| 久久国产婷婷国产香蕉| 国产精品欧美日韩一区| 麻豆久久一区| 成人福利av| 欧洲av不卡| 欧美亚洲激情| 夜夜嗨一区二区三区| 欧美亚洲在线日韩| 国产视频久久| 日韩在线电影| 国产精品一区二区av日韩在线| 欧美黄页在线免费观看| 国产suv精品一区二区四区视频| 成人在线免费观看91| 日韩一区二区在线免费| 欧美手机在线| 免费看日韩精品| 日韩国产欧美三级| 久久av综合| 91精品国产成人观看| 国产视频一区在线观看一区免费| 蜜桃视频在线观看一区| 日韩激情一二三区| 精品一二三区| 激情五月综合| 日韩精品导航| 国产成人精品免费视| 午夜国产一区二区| 日韩一区二区三区四区五区| 国产精品第一| 久久一级电影| 日产欧产美韩系列久久99| 捆绑调教美女网站视频一区| 久久精品国产亚洲夜色av网站| 亚洲无线观看| 国产一区二区三区不卡视频网站| 欧美日韩在线二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美另类中文字幕 | 免费在线观看一区| 亚洲网站视频| 热久久久久久| 欧美精品资源| 亚洲精品亚洲人成在线观看| 欧美成人aaa| jiujiure精品视频播放| 日本不卡视频一二三区| 98精品视频| 中文字幕亚洲精品乱码| 久久精品亚洲| 91精品1区| 国产精品一区三区在线观看| 婷婷综合六月| 日韩高清在线一区| 99久久九九| 国产精品sm| 亚洲主播在线| 不卡专区在线| 少妇高潮一区二区三区99| 日韩电影免费网址| 日韩av中文字幕一区二区三区| 日本精品影院| 国产精品久久久久av蜜臀| 香蕉久久夜色精品国产| 91综合网人人| 日韩欧美2区| 99成人在线视频| 国产精品视频一区视频二区| 99视频一区| 91免费精品| 日韩高清在线不卡| 午夜日本精品| 国产91在线播放精品| 日韩不卡在线观看日韩不卡视频| 欧美福利在线| 亚洲黄色中文字幕| 国产精品mv在线观看| 亚洲精品麻豆| 国产精品美女| 久久中文字幕av| 精品久久久久中文字幕小说| 日韩视频1区| 午夜亚洲福利在线老司机| 日韩大片在线播放| 精品一区二区三区在线观看视频 | 快播电影网址老女人久久| 国产免费播放一区二区| 免费看的黄色欧美网站| 99久久久久国产精品| 国产aa精品| 国产精品白丝一区二区三区| 视频一区国产视频| 黄色亚洲免费| 免费视频国产一区| 99久久精品国产亚洲精品| 四虎成人av| 麻豆精品视频在线观看免费| 欧美亚洲二区| 五月亚洲婷婷 | 亚洲精品一区二区妖精| 亚洲人成在线网站| 吉吉日韩欧美| 亚洲最新无码中文字幕久久| 精品日韩一区| 久久精品资源| 麻豆精品在线观看| 免费一级欧美在线观看视频| 免费一区二区三区在线视频| 国产精品va视频| 美女国产一区二区三区|