校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > OpenCV半小時(shí)掌握基本操作之圓圈檢測(cè)

OpenCV半小時(shí)掌握基本操作之圓圈檢測(cè)

熱門標(biāo)簽:企業(yè)微信地圖標(biāo)注 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)違法嗎 銀川電話機(jī)器人電話 高德地圖標(biāo)注收入咋樣 沈陽防封電銷電話卡 B52系統(tǒng)電梯外呼顯示E7 萊蕪電信外呼系統(tǒng) 怎么辦理400客服電話 地圖標(biāo)注多個(gè)

【OpenCV】⚠️高手勿入! 半小時(shí)學(xué)會(huì)基本操作 ⚠️ 圓圈檢測(cè)

概述

OpenCV 是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺庫, 支持多語言, 功能強(qiáng)大. 今天小白就帶大家一起攜手走進(jìn) OpenCV 的世界.

霍夫圓變換

霍夫圓變換 (Hough Circle Transform) 的原理和霍夫直線變換類似. 對(duì)于一條直線, 我們可以用參數(shù) (r, θ) 表示, 對(duì)于圓我們需要三個(gè)參數(shù) (x, y, r), 分別代表三個(gè)參數(shù) x 圓心, y 圓心, r, 半徑.

代碼實(shí)現(xiàn)

因?yàn)榛舴驁A檢測(cè)對(duì)噪聲比較敏感, 所以首先要對(duì)圖像做中值濾波.

基于效率考慮, Opencv 中實(shí)現(xiàn)的霍夫變換圓檢測(cè)是基于圖像梯度實(shí)現(xiàn), 分為兩步:

檢測(cè)變換, 發(fā)現(xiàn)可能的圓心基于第一步的基礎(chǔ)上從候選圓心開始計(jì)算最佳半徑大小

格式:

cv2.HoughCircles(image, method, dp, minDist, circles=None, param1=None, param2=None, minRadius=None, maxRadius=None)

參數(shù):

image: 輸入圖像

method: 判別方法, 只有 HOUGH_GRADIENT (計(jì)算梯度) 一個(gè)方法

dp: 累計(jì)閾值

minDist: 間距, 小于間距判斷成一個(gè)圓

param1: Canny 邊緣檢測(cè)的最大閾值

param2: 在檢測(cè)階段圓心累加器閾值, 是否為圓形

例一

import numpy as np
import cv2
from matplotlib import pyplot as plt

# 讀取圖片
image = cv2.imread("map.jpg")
image_copy = image.copy()

# 均值遷移濾波
filter = cv2.pyrMeanShiftFiltering(image, 10, 100)

# 轉(zhuǎn)換成灰度圖
filter_gray = cv2.cvtColor(filter, cv2.COLOR_BGR2GRAY)

# 霍夫曼圓圈檢測(cè)
circles = cv2.HoughCircles(filter_gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=100, minRadius=0, maxRadius=0)
circles = np.uint16(np.around(circles))

# 遍歷
for circle in circles[0, :]:
    cv2.circle(image_copy, (circle[0], circle[1]), circle[2], (0, 0, 255), 2)
    cv2.circle(image_copy, (circle[0], circle[1]), 2, (255, 0, 0), 2)

# 圖片展示
f, ax = plt.subplots(2, 2, figsize=(12, 12))

# 子圖
ax[0, 0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
ax[0, 1].imshow(cv2.cvtColor(filter, cv2.COLOR_BGR2RGB))
ax[1, 0].imshow(filter_gray, "gray")
ax[1, 1].imshow(cv2.cvtColor(image_copy, cv2.COLOR_BGR2RGB))

# 標(biāo)題
ax[0, 0].set_title("original")
ax[0, 1].set_title("image filter")
ax[1, 0].set_title("image gray")
ax[1, 1].set_title("image circle")

plt.show()

# 保存結(jié)果
cv2.imwrite("map_result.jpg", image_copy)

輸出結(jié)果:

例二

import numpy as np
import cv2
from matplotlib import pyplot as plt

# 讀取圖片
image = cv2.imread("coin.jpg")
image_copy = image.copy()

# 均值遷移濾波
filter = cv2.pyrMeanShiftFiltering(image, 10, 40)

# 轉(zhuǎn)換成灰度圖
filter_gray = cv2.cvtColor(filter, cv2.COLOR_BGR2GRAY)

# 霍夫曼圓圈檢測(cè)
circles = cv2.HoughCircles(filter_gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=100, minRadius=0, maxRadius=0)
circles = np.uint16(np.around(circles))

# 遍歷
for circle in circles[0, :]:
    cv2.circle(image_copy, (circle[0], circle[1]), circle[2], (0, 0, 255), 2)
    cv2.circle(image_copy, (circle[0], circle[1]), 2, (255, 0, 0), 2)

# 圖片展示
f, ax = plt.subplots(2, 2, figsize=(12, 12))

# 子圖
ax[0, 0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
ax[0, 1].imshow(cv2.cvtColor(filter, cv2.COLOR_BGR2RGB))
ax[1, 0].imshow(filter_gray, "gray")
ax[1, 1].imshow(cv2.cvtColor(image_copy, cv2.COLOR_BGR2RGB))

# 標(biāo)題
ax[0, 0].set_title("original")
ax[0, 1].set_title("image filter")
ax[1, 0].set_title("image gray")
ax[1, 1].set_title("image circle")

plt.show()

# 保存結(jié)果
cv2.imwrite("coin_result.jpg", image_copy)

輸出結(jié)果:

到此這篇關(guān)于OpenCV半小時(shí)掌握基本操作之圓圈檢測(cè)的文章就介紹到這了,更多相關(guān)OpenCV圓圈檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • OpenCV半小時(shí)掌握基本操作之圖像裁剪融合
  • OpenCV半小時(shí)掌握基本操作之圖像處理
  • opencv-python基本圖像處理詳解
  • OpenCV圖像處理基本操作詳解
  • Opencv圖像處理之詳解掩膜mask
  • 基于python的opencv圖像處理實(shí)現(xiàn)對(duì)斑馬線的檢測(cè)示例
  • Python+OpenCV圖像處理——圖像二值化的實(shí)現(xiàn)
  • OpenCV半小時(shí)掌握基本操作之分水嶺算法
  • OpenCV半小時(shí)掌握基本操作之傅里葉變換
  • OpenCV半小時(shí)掌握基本操作之圖像輪廓
  • OpenCV半小時(shí)掌握基本操作之直方圖
  • OpenCV半小時(shí)掌握基本操作之模板匹配
  • OpenCV半小時(shí)掌握基本操作之對(duì)象測(cè)量
  • OpenCV半小時(shí)掌握基本操作之圖像基礎(chǔ)操作

標(biāo)簽:銀川 安慶 湘西 烏魯木齊 呼倫貝爾 三亞 葫蘆島 呼倫貝爾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OpenCV半小時(shí)掌握基本操作之圓圈檢測(cè)》,本文關(guān)鍵詞  OpenCV,半小時(shí),掌握,基本操作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OpenCV半小時(shí)掌握基本操作之圓圈檢測(cè)》相關(guān)的同類信息!
  • 本頁收集關(guān)于OpenCV半小時(shí)掌握基本操作之圓圈檢測(cè)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 湖南省| 山阴县| 岢岚县| 应城市| 长顺县| 武清区| 印江| 兴国县| 靖宇县| 克拉玛依市| 博罗县| 即墨市| 收藏| 宁津县| 浑源县| 洛阳市| 茂名市| 天峻县| 大同市| 满洲里市| 巴南区| 万盛区| 台北市| 全南县| 抚宁县| 乐山市| 镇平县| 定远县| 民勤县| 灵川县| 三原县| 潮州市| 临城县| 白玉县| 桃园市| 二连浩特市| 安福县| 枝江市| 镇远县| 翁源县| 汝阳县|