最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java+opencv3.2.0實現(xiàn)hough直線檢測

 更新時間:2018年02月10日 08:33:03   作者:帥氣的貓爪  
這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0之hough直線檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下

hough變換是圖像處理中的一種特征提取技術(shù),該過程在一個參數(shù)空間中通過計算累計結(jié)果的局部最大值得到一個符合特定形狀的集合作為hough變換結(jié)果。

發(fā)展史:

1962年由PaulHough首次提出,用來檢測直線和曲線。
1972年由Richard Duda & Peter Hart推廣使用,擴(kuò)展到任意形狀物體的識別。

原理:

一條直線在直角坐標(biāo)系下的表示形式為y=k*x+b,而在極坐標(biāo)系下表示為r=x*cos(theta)+y*sin(theta)。hough變換的思想為在直角坐標(biāo)系下的一個點對應(yīng)極坐標(biāo)系下的一條直線,同樣,極坐標(biāo)系下的一個點對應(yīng)直角坐標(biāo)系下的一條直線。在直角坐標(biāo)系中的直線,斜率和截距是一定的,這樣這條直線上的所有點在極坐標(biāo)系中聚焦于一點,這樣的聚焦點就代表了直角坐標(biāo)系中的直線。
對于直線x=c,在實際應(yīng)用中,是采用參數(shù)方程p=x*cos(theta)+y*sin(theta)。這樣,圖像平面上的一個點就對應(yīng)到參數(shù)r—theta平面上的一條曲線上,其它的還是一樣。

標(biāo)準(zhǔn)hough變換:

Imgproc.HoughLines(Mat image, Mat lines, double rho, double theta, int threshold, double srn, double stn, double min_theta, double max_theta)

參數(shù)說明:

image:源圖像
lines:hough變換后儲存檢測到的線條的輸出矢量
rho:以像素為單位的距離精度
theta:以弧度為單位的角度精度
threshold:識別某部分為一條直線時必須達(dá)到的值
srn:rho參數(shù)的除數(shù)距離,有默認(rèn)值0
stn:theta參數(shù)的除數(shù)距離,默認(rèn)值0
min_theta:檢測到的直線的最小角度
max_theta:檢測到的直線的最大角度

示例代碼:

public static void main(String[] args)
 {
 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

 Mat srcImage = Imgcodecs.imread("F:\\6597210504144579394.jpg");
 Mat dstImage = srcImage.clone();
 Imgproc.Canny(srcImage, dstImage, 400, 500, 5, false);
 Mat storage = new Mat();
 Imgproc.HoughLines(dstImage, storage, 1, Math.PI / 180, 200, 0, 0, 0, 10);
 for (int x = 0; x < storage.rows(); x++)
 {
  double[] vec = storage.get(x, 0);

  double rho = vec[0];
  double theta = vec[1];

  Point pt1 = new Point();
  Point pt2 = new Point();

  double a = Math.cos(theta);
  double b = Math.sin(theta);

  double x0 = a * rho;
  double y0 = b * rho;

  pt1.x = Math.round(x0 + 1000 * (-b));
  pt1.y = Math.round(y0 + 1000 * (a));
  pt2.x = Math.round(x0 - 1000 * (-b));
  pt2.y = Math.round(y0 - 1000 * (a));

  if (theta >= 0)
  {
  Imgproc.line(srcImage, pt1, pt2, new Scalar(255, 255, 255, 255), 1, Imgproc.LINE_4, 0);
  }
  }
  Imgcodecs.imwrite("F:\\dst2.jpg", srcImage);
  }

累計概率hough變換:

Imgproc.HoughLinesP(Mat image, Mat lines, double rho, double theta, int threshold, double minLineLength, double maxLineGap)

參數(shù)說明:

image:源圖像
lines:hough變換后儲存檢測到的線條的輸出矢量
rho:以像素為單位的距離精度
theta:以弧度為單位的角度精度
threshold:識別某部分為一條直線時必須達(dá)到的值
minLineLength:最低線段的長度,默認(rèn)為0
maxLineGap:允許將同一行點與點之間連接起來的最大的距離,默認(rèn)為0

示例代碼:

public static void main(String[] args)
 {
 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
 Mat srcImage = Imgcodecs.imread("F:\\6597210504144579394.jpg");
 Mat dstImage = srcImage.clone();
 Imgproc.Canny(srcImage, dstImage, 400, 500, 5, false);
 Mat storage = new Mat();
 Imgproc.HoughLinesP(dstImage, storage, 1, Math.PI / 180, 50, 0, 0);
 for (int x = 0; x < storage.rows(); x++)
 {
  double[] vec = storage.get(x, 0);
  double x1 = vec[0], y1 = vec[1], x2 = vec[2], y2 = vec[3];
  Point start = new Point(x1, y1);
  Point end = new Point(x2, y2);
  Imgproc.line(srcImage, start, end, new Scalar(255, 255, 255, 255), 1, Imgproc.LINE_4, 0);
 }
 Imgcodecs.imwrite("F:\\dst2.jpg", srcImage);
 }

源圖片:

標(biāo)準(zhǔn)hough變換結(jié)果:


累計概率hough變換結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實現(xiàn)開箱即用的redis分布式鎖

    Java實現(xiàn)開箱即用的redis分布式鎖

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)開箱即用的基于redis的分布式鎖,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以收藏一下
    2022-12-12
  • Java中DecimalFormat用法及符號含義

    Java中DecimalFormat用法及符號含義

    DecimalFormat是NumberFormat的一個具體子類,用于格式化十進(jìn)制數(shù)字。這篇文章介紹了DecimalFormat的用法及符號含義,需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • springSecurity實現(xiàn)簡單的登錄功能

    springSecurity實現(xiàn)簡單的登錄功能

    這篇文章主要為大家詳細(xì)介紹了springSecurity實現(xiàn)簡單的登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java中檢查字符串是否以特定字符結(jié)尾

    Java中檢查字符串是否以特定字符結(jié)尾

    這篇文章主要介紹了Java中檢查字符串是否以特定字符結(jié)尾,文章圍繞主題展開字符串匹配問題,具有一定的參考價值需要的小伙伴可以參考一下
    2022-06-06
  • Maven生成可直接運行的jar包(多種方式)

    Maven生成可直接運行的jar包(多種方式)

    文章介紹了三種使用Maven生成可以直接運行的jar包的方法:通過maven-jar-plugin和maven-dependency-plugin插件、maven-assembly-plugin插件以及maven-shade-plugin插件,每種方法都有其特點和適用場景,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 重試框架Guava-Retry和spring-Retry的使用示例

    重試框架Guava-Retry和spring-Retry的使用示例

    spring-retry 和 guava-retry 工具都是線程安全的重試,能夠支持并發(fā)業(yè)務(wù)場景的重試邏輯正確性,本文主要介紹了重試框架Guava-Retry和spring-Retry的使用示例,感興趣的可以一下
    2023-09-09
  • Java排序的那些事之sort方法的使用詳解

    Java排序的那些事之sort方法的使用詳解

    sort方法用于對數(shù)組的元素進(jìn)行排序。排序順序可以是字母或數(shù)字,并按升序或降序。默認(rèn)排序順序為按字母升序,當(dāng)數(shù)字是按字母順序排列時"40"將排在"5"前面。使用數(shù)字排序,你必須通過一個函數(shù)作為參數(shù)來調(diào)用。這些說起來可能很難理解,你可以通過本篇文章進(jìn)一步了解它
    2021-09-09
  • tk.mybatis擴(kuò)展通用接口使用詳解

    tk.mybatis擴(kuò)展通用接口使用詳解

    這篇文章主要介紹了tk.mybatis擴(kuò)展通用接口使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • spring boot+jwt實現(xiàn)api的token認(rèn)證詳解

    spring boot+jwt實現(xiàn)api的token認(rèn)證詳解

    這篇文章主要給大家介紹了關(guān)于spring boot+jwt實現(xiàn)api的token認(rèn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Java多線程之同步工具類CyclicBarrier

    Java多線程之同步工具類CyclicBarrier

    這篇文章主要介紹Java多線程之同步工具類CyclicBarrier,它是一個同步工具類,它允許一組線程互相等待,直到達(dá)到某個公共屏障點,支持一個可選的Runnable命令,在一組線程中的最后一個線程到達(dá)之后,該命令只在每個屏障點運行一次。下面來看文章具體內(nèi)容
    2021-10-10

最新評論

青海省| 讷河市| 兴宁市| 富顺县| 施甸县| 金沙县| 疏附县| 天门市| 若尔盖县| 西畴县| 清远市| 平安县| 南丰县| 镇远县| 长武县| 多伦县| 射阳县| 商城县| 兴义市| 沐川县| 台安县| 淄博市| 蕲春县| 东安县| 千阳县| 西吉县| 达孜县| 诸城市| 沙洋县| 玉环县| 铁岭县| 兰州市| 化州市| 祁门县| 乌拉特前旗| 南靖县| 寿宁县| 宝兴县| 富川| 墨脱县| 红安县|