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

OpenCV 邊緣檢測(cè)

 更新時(shí)間:2019年07月10日 10:53:17   作者:法納斯特  
OpenCV提供了許多邊緣檢測(cè)濾波函數(shù),這些濾波函數(shù)都會(huì)將非邊緣區(qū)域轉(zhuǎn)為黑色,將邊緣區(qū)域轉(zhuǎn)為白色或其他飽和的顏色。這篇文章主要介紹了OpenCV 邊緣檢測(cè),需要的朋友可以參考下

邊緣在人類視覺和計(jì)算機(jī)視覺中均起著重要的作用。

人類能夠僅憑一張背景剪影或一個(gè)草圖就識(shí)別出物體類型和姿態(tài)。

其中OpenCV提供了許多邊緣檢測(cè)濾波函數(shù),這些濾波函數(shù)都會(huì)將非邊緣區(qū)域轉(zhuǎn)為黑色,將邊緣區(qū)域轉(zhuǎn)為白色或其他飽和的顏色。

不過這些濾波函數(shù)都很容易將噪聲錯(cuò)誤地識(shí)別為邊緣,所以需要進(jìn)行模糊處理。

本次的模糊操作使用高斯模糊(低通濾波器),最常用的模糊濾波器(平滑濾波器)之一,是一個(gè)削弱高頻信號(hào)強(qiáng)度的低通濾波器。

低通濾波器,在像素與周圍像素的亮度差值小于一個(gè)特定值時(shí),平滑該像素的亮度,主要用于去噪和模糊化。

邊緣檢測(cè)則是使用OpenCV的Canny函數(shù)實(shí)現(xiàn),算法雖然很復(fù)雜,但是代碼卻很簡(jiǎn)單。

5個(gè)步驟,使用高斯濾波器對(duì)圖像去噪、計(jì)算梯度、在邊緣上使用非最大抑制(NMS)、在檢測(cè)到的邊緣上使用雙(double)閾值去除陽(yáng)性(false positive)、分析所有的邊緣及其連接,保留真正的邊緣并消除不明顯的邊緣。

下面就來實(shí)現(xiàn)一下「跳一跳」的邊緣檢測(cè),得以獲取方塊的中心位置。

/ 01 / 邊緣檢測(cè)

Canny邊緣檢測(cè)代碼如下。

import cv2
import numpy as np
# 讀取原圖像
img = cv2.imread('game.png', 0)
# 顯示原圖像
cv2.namedWindow('img', 0)
cv2.resizeWindow('img', 400, 600)
cv2.imshow('img', img)
# 高斯模糊
img_rgb = cv2.GaussianBlur(img, (5, 5), 0)
canny_img = cv2.Canny(img_rgb, 1, 10)
# 顯示邊緣檢測(cè)圖像
cv2.namedWindow('canny', 0)
cv2.resizeWindow('canny', 400, 600)
cv2.imshow('canny', canny_img)
# 輸出邊緣檢測(cè)圖像的高和寬
H, W = canny_img.shape
print(H, W)

輸出的圖像高寬分別為1920和1080。

下面是原圖像灰度圖和邊緣檢測(cè)圖像。

接下來,通過邊緣檢測(cè)圖像找到方塊的第一個(gè)頂點(diǎn)(上頂點(diǎn))。

# 第一個(gè)頂點(diǎn)的高度,row為列表(代表每一行的像素值),max(row)獲取列表中最大的像素值
y_top = np.nonzero([max(row) for row in canny_img[400:]])[0][0] + 400

對(duì)圖像高度大于400的行進(jìn)行遍歷(這樣可以去除上方數(shù)字270以及小程序塊的影響)。

np.nonzero()表示獲取列表元素?cái)?shù)值不為0的位置,第一個(gè)即為上頂點(diǎn)的高度值。

接下來獲取上頂點(diǎn)的寬度值。

# 第一個(gè)頂點(diǎn)的寬度
x_top = int(np.mean(np.nonzero(canny_img[y_top])))

這里發(fā)現(xiàn)有好幾個(gè)水平點(diǎn),所以最后取平均值。

接下來對(duì)方塊下頂點(diǎn)的位置進(jìn)行確定。

為了跳過小白圈的影響,在上頂點(diǎn)高度的基礎(chǔ)上加上80個(gè)像素大小。

然后往下方遍歷,寬度值保持不變,直至找到像素值不為0的點(diǎn)。

便得到了方塊的下頂點(diǎn)坐標(biāo)。

# 跳過小白圈,然后遍歷
y_bottom = y_top + 80
for row in range(y_bottom, H):
  if canny_img[row, x_top] != 0:
    y_bottom = row
    break
# 得到方塊的中心點(diǎn)
x_center, y_center = x_top, (y_top + y_bottom) // 2
# 繪制以方塊中心點(diǎn)為圓心的圓
cv2.circle(canny_img, (x_center, y_center), 33, (255, 0, 255), 2)
# 顯示得到的圖像
cv2.namedWindow('result', 0)
cv2.resizeWindow('result', 400, 600)
cv2.imshow('result', canny_img)
# 結(jié)束
cv2.waitKey(0)
cv2.destroyAllWindows()

最后通過上下頂點(diǎn)的坐標(biāo),得到方塊的中心點(diǎn)。

左圖為邊緣檢測(cè)原圖,右圖為找到方塊中心點(diǎn)并以中心點(diǎn)為圓心繪制圓形的圖像。

/ 02 / 跳動(dòng)實(shí)現(xiàn)

現(xiàn)在結(jié)合之前模板匹配獲得到的小跳棋位置,計(jì)算兩中心的距離。

勾三股四弦五,便能得到兩個(gè)中心的距離了。

看下圖,一目了然。

玩過跳一跳的應(yīng)該都知道,對(duì)于不同的距離,我們需要按壓的時(shí)間是不同的。

所以可以給距離和按壓時(shí)間設(shè)置一個(gè)相關(guān)參數(shù),此處設(shè)置為1.35。

對(duì)于我的手機(jī)簡(jiǎn)直完美匹配(與屏幕大小有關(guān))。

最后通過adb命令完成一定的按壓時(shí)間,完成「跳一跳」自動(dòng)化。

總結(jié)

以上所述是小編給大家介紹的OpenCV 邊緣檢測(cè),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)

及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Python?Pandas的concat合并

    Python?Pandas的concat合并

    這篇文章主要介紹了Python?Pandas的concat合并,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Pyhon Flask框架:第一個(gè)Flask程序

    Pyhon Flask框架:第一個(gè)Flask程序

    這篇文章主要介紹了Flask搭建虛擬環(huán)境并運(yùn)行第一個(gè)flask程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • Python re模塊介紹

    Python re模塊介紹

    這篇文章主要介紹了Python re模塊介紹,需要的朋友可以參考下
    2014-11-11
  • 使用python實(shí)現(xiàn)時(shí)間序列白噪聲檢驗(yàn)方式

    使用python實(shí)現(xiàn)時(shí)間序列白噪聲檢驗(yàn)方式

    這篇文章主要介紹了使用python實(shí)現(xiàn)時(shí)間序列白噪聲檢驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python結(jié)合Redis開發(fā)一個(gè)消息訂閱系統(tǒng)

    Python結(jié)合Redis開發(fā)一個(gè)消息訂閱系統(tǒng)

    消息訂閱是一種常見的通信模式,用于實(shí)現(xiàn)系統(tǒng)之間的解耦和異步通信,本文將詳細(xì)介紹如何使用Python實(shí)現(xiàn)一個(gè)高效與可靠的消息訂閱系統(tǒng),有需要的可以了解下
    2025-03-03
  • Python Color類與文字繪制零基礎(chǔ)掌握

    Python Color類與文字繪制零基礎(chǔ)掌握

    這篇文章主要介紹了Python Color類與文字繪制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Pycharm 常用插件推薦小結(jié)

    Pycharm 常用插件推薦小結(jié)

    本文主要介紹了Pycharm 常用插件推薦小結(jié),包含KeyPromoterX、ideaVim、Markdown、JupyterNotebook等PyCharm插件的功能和安裝方法,幫助提高編程效率和便捷性
    2024-11-11
  • 使用Flink與Python進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的基本步驟

    使用Flink與Python進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的基本步驟

    Apache Flink是一個(gè)流處理框架,用于實(shí)時(shí)處理和分析數(shù)據(jù)流,PyFlink是Apache Flink的Python API,它允許用戶使用Python語(yǔ)言來編寫Flink作業(yè),進(jìn)行實(shí)時(shí)數(shù)據(jù)處理,以下是如何使用Flink與Python進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的基本步驟,需要的朋友可以參考下
    2024-09-09
  • 解決win7操作系統(tǒng)Python3.7.1安裝后啟動(dòng)提示缺少.dll文件問題

    解決win7操作系統(tǒng)Python3.7.1安裝后啟動(dòng)提示缺少.dll文件問題

    這篇文章主要介紹了解決win7操作系統(tǒng)Python3.7.1安裝后啟動(dòng)提示缺少.dll文件問題,本文給大家提供兩種解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python制作表白愛心合集

    Python制作表白愛心合集

    這篇文章主要介紹了幾個(gè)表白小項(xiàng)目合集,有愛心表白、愛心樹等。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的價(jià)值,需要的可以參考一下
    2022-01-01

最新評(píng)論

会泽县| 固原市| 临泉县| 白水县| 竹北市| 五指山市| 曲靖市| 彭泽县| 东丽区| 大埔区| 呼和浩特市| 江川县| 绥宁县| 屯昌县| 通道| 融水| 江安县| 恩平市| 蕲春县| 陆丰市| 荆州市| 缙云县| 泽普县| 资源县| 厦门市| 泰顺县| 井陉县| 大荔县| 东方市| 安宁市| 海伦市| 九台市| 邻水| 莎车县| 宜阳县| 宁安市| 淄博市| 科尔| 清远市| 顺义区| 大庆市|