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

詳解Python+OpenCV實(shí)現(xiàn)圖像二值化

 更新時(shí)間:2022年05月13日 15:20:02   作者:用余生去守護(hù)  
圖像二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的黑白效果的過程。本文將通過Python+OpenCV實(shí)現(xiàn)這一過程,感興趣的可以學(xué)習(xí)一下

一、圖像二值化

1.效果

2.源碼

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
 
# img = cv2.imread('test.jpg')                         #這幾行是對圖像進(jìn)行降噪處理,但事還存在一些問題。
 
# dst = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
 
# plt.subplot(121),plt.imshow(img)
# plt.subplot(122),plt.imshow(dst)
# plt.show()
fn = "cell.png"
if __name__ == '__main__':
    print('loading %s' % fn)
    img = cv2.imread(fn)               #讀取圖像 修改上方 fn的路徑即可 
    sp = img.shape
    print(sp)                          #在編譯結(jié)果處顯示圖片的信息 這行沒啥用 
    
    # 獲取圖像大小
    sz1 = sp[0]                         #長 
    sz2 = sp[1]                         #寬 
    print('width:%d\nheight:%d' % (sz2,sz1)) #控制窗口顯示的比例 
    # 創(chuàng)建一個(gè)窗口顯示圖像
    cv2.namedWindow('img')              #這行沒啥用 控制顯示圖片窗口的名字 
    cv2.imshow('img',img)               #顯示圖片 
    # 復(fù)制圖像矩陣,生成與源圖像一樣的圖像,并顯示
    myimg2 = img.copy();
    cv2.namedWindow('myimg2')           #這行沒啥用 控制顯示圖片窗口的名字 
    cv2.imshow('myimg2',myimg2)
    # 復(fù)制并轉(zhuǎn)換為灰度化圖像并顯示
    myimg1 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #灰度值函數(shù) 
    cv2.namedWindow('myimg1')
    cv2.imshow('myimg1',myimg1)            #顯示灰度處理后的函數(shù)  
    cv2.imwrite('gray.jpg', myimg1)     #保存當(dāng)前灰度值處理過后的文件 
    cv2.waitKey()         #第一個(gè)參數(shù)是保存文件的名稱,必須加jgp,png等的后綴否則報(bào)錯(cuò)。第二個(gè)參數(shù)是保存的對象
    cv2.destroyAllWindows()

二、圖像二值化(調(diào)節(jié)閾值)

1.源碼一

代碼如下(示例):

import cv2

def nothing():  # 定義回調(diào)函數(shù)
    pass

def image_processing(img, Gauss_flag=1, Color_flag=1, Gray_flag=0):  # 圖像預(yù)處理
    # 高斯濾波器平滑圖像
    if Gauss_flag == 1:
        img = cv2.GaussianBlur(img, (3, 3), 0)
    # 均衡彩色圖像的直方圖
    if Color_flag == 1:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
    # 均衡灰度圖像的直方圖
    if Gray_flag == 1:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 將彩色圖像轉(zhuǎn)為灰度圖像
        img = cv2.equalizeHist(img)

    return img

def image_canny(img):  # 圖像邊緣檢測

    # 設(shè)置窗口
    cv2.namedWindow('Canny')

    # 創(chuàng)建滑動條,分別控制各個(gè)參數(shù)
    cv2.createTrackbar('threshold1', 'Canny', 50, 300, nothing)  # 閾值1
    cv2.createTrackbar('threshold2', 'Canny', 100, 300, nothing)  # 較大的閾值2用于檢測圖像中明顯的邊緣
    # cv2.createTrackbar('apertureSize', 'Canny', 0, 2, nothing)  # Sobel算子大?。?,5,7)
    cv2.createTrackbar('L2gradient', 'Canny', 0, 1,
                       nothing)  # 參數(shù)(布爾值):true:使用更精確的L2范數(shù)(兩個(gè)方向的倒數(shù)的平方和再開放),false:使用L1范數(shù)(直接將兩個(gè)方向?qū)?shù)的絕對值相加)

    while (1):
        # 返回滑動條所在位置的值
        threshold1 = cv2.getTrackbarPos('threshold1', 'Canny')  # 閾值1
        threshold2 = cv2.getTrackbarPos('threshold2', 'Canny')  # 閾值2
        L2gradient = cv2.getTrackbarPos('L2gradient', 'Canny')  # 參數(shù)
        # aperturesize = cv2.getTrackbarPos('apertureSize', 'Canny')  # Sobel算子大小
        # size = aperturesize * 2 + 3  # Sobel算子大小(3,5,7)

        # Canny邊緣檢測
        img_edges = cv2.Canny(img, threshold1, threshold2, L2gradient=L2gradient)

        # 顯示邊緣化圖像
        cv2.imshow('Canny', img_edges)

        if cv2.waitKey(1) == ord('q'):  # 按q退出
            break
        elif cv2.waitKey(1) == ord('s'):  # 按s保存圖像到原圖像所在目錄,命名為output.jpg,再退出!

            cv2.imwrite('\\'.join(img_path.split('\\')[:-1]) + '\\output.jpg', img_edges)
            print("圖像成功保存")
            break

    cv2.destroyAllWindows()

if __name__ == "__main__":
    img_path = input("請輸入圖片地址(如E:\\Code\\xx.jpg):")  # 輸入原圖像地址
    guass_flag = int(input("是否進(jìn)行高斯濾波(輸入1進(jìn)行,輸入0不進(jìn)行):"))  # 輸入1為進(jìn)行高斯濾波,輸入0為不進(jìn)行
    color_flag = int(input("是否均衡彩色圖像(輸入1進(jìn)行,輸入0不進(jìn)行):"))  # 輸入1為進(jìn)行彩色圖像均衡,輸入0為不進(jìn)行
    gray_flag = int(input("是否均衡灰度圖像(輸入1進(jìn)行,輸入0不進(jìn)行):"))  # 輸入1為進(jìn)行灰度圖像均衡,輸入0為不進(jìn)行
    # 載入圖像
    image = cv2.imread(img_path)
    # 圖像預(yù)處理
    img = image_processing(image, Gauss_flag=guass_flag, Color_flag=color_flag, Gray_flag=gray_flag)
    # 顯示原圖像
    cv2.imshow('Original', image)
    # 顯示預(yù)處理后圖像
    cv2.imshow('Pretreatment', img)
    # 圖像邊緣檢測
    image_canny(img)

2.源碼二

代碼如下(示例):

import cv2
#載入圖片
img_original=cv2.imread(r'E:\py\python3.7\test2\test14yuzhi\cell.png')
#設(shè)置窗口
cv2.namedWindow('Canny')
#定義回調(diào)函數(shù)
def nothing(x):
    pass
#創(chuàng)建兩個(gè)滑動條,分別控制threshold1,threshold2
cv2.createTrackbar('threshold1','Canny',50,400,nothing)
cv2.createTrackbar('threshold2','Canny',100,400,nothing)
while(1):
    #返回滑動條所在位置的值
    threshold1=cv2.getTrackbarPos('threshold1','Canny')
    threshold2=cv2.getTrackbarPos('threshold2','Canny')
    #Canny邊緣檢測
    img_edges=cv2.Canny(img_original,threshold1,threshold2)
    #顯示圖片
    cv2.imshow('original',img_original)
    cv2.imshow('Canny',img_edges)  
    if cv2.waitKey(1)==ord('q'):
        break
cv2.destroyAllWindows()

到此這篇關(guān)于詳解Python+OpenCV實(shí)現(xiàn)圖像二值化的文章就介紹到這了,更多相關(guān)Python OpenCV圖像二值化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析

    Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析

    這篇文章主要為大家Python常用內(nèi)建函數(shù),文中通過圖例詳細(xì)的給大家作出了講解分析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • python操作 hbase 數(shù)據(jù)的方法

    python操作 hbase 數(shù)據(jù)的方法

    下面小編就為大家?guī)硪黄猵ython操作 hbase 數(shù)據(jù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • pandas中去除指定字符的實(shí)例

    pandas中去除指定字符的實(shí)例

    今天小編就為大家分享一篇pandas中去除指定字符的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 幾行代碼讓 Python 函數(shù)執(zhí)行快 30 倍

    幾行代碼讓 Python 函數(shù)執(zhí)行快 30 倍

    Python 編程語言,與其他流行編程語言相比主要缺點(diǎn)是它的動態(tài)特性和多功能屬性拖慢了速度表現(xiàn)。Python 代碼是在運(yùn)行時(shí)被解釋的,而不是在編譯時(shí)被編譯為原生代碼。在本文中,我們將討論如何用多處理模塊并行執(zhí)行自定義 Python 函數(shù),并進(jìn)一步對比運(yùn)行時(shí)間指標(biāo)。

    2021-10-10
  • Python中規(guī)范定義命名空間的一些建議

    Python中規(guī)范定義命名空間的一些建議

    命名空間是Python程序的一大根本,編程時(shí)持命名空間的整潔還是十分必要的,這里就來為大家總結(jié)Python中規(guī)范定義命名空間的一些建議,需要的朋友可以參考下
    2016-06-06
  • Python HTMLTestRunner可視化報(bào)告實(shí)現(xiàn)過程解析

    Python HTMLTestRunner可視化報(bào)告實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python HTMLTestRunner可視化報(bào)告實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 使用matplotlib的pyplot模塊繪圖的實(shí)現(xiàn)示例

    使用matplotlib的pyplot模塊繪圖的實(shí)現(xiàn)示例

    這篇文章主要介紹了使用matplotlib的pyplot模塊繪圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 跟老齊學(xué)Python之從格式化表達(dá)式到方法

    跟老齊學(xué)Python之從格式化表達(dá)式到方法

    上一講,主要介紹了用%表達(dá)的一種輸出格式化表達(dá)式。在那一講最后又拓展了一點(diǎn)東西,拓展的那點(diǎn),名曰:格式化方法。因?yàn)樗R上是使用了str的format方法。
    2014-09-09
  • 分享6個(gè)隱藏的python功能

    分享6個(gè)隱藏的python功能

    給大家詳細(xì)分析了6個(gè)隱藏的python功能,并詳細(xì)講解了每個(gè)功能用法,需要的朋友學(xué)習(xí)下吧。
    2017-12-12
  • python 實(shí)現(xiàn)在txt指定行追加文本的方法

    python 實(shí)現(xiàn)在txt指定行追加文本的方法

    下面小編就為大家分享一篇python 實(shí)現(xiàn)在txt指定行追加文本的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

凭祥市| 信阳市| 东港市| 藁城市| 资中县| 广丰县| 昌宁县| 广水市| 蒙阴县| 栾川县| 上犹县| 科尔| 库伦旗| 宁乡县| 镇康县| 衢州市| 丹寨县| 新晃| 启东市| 桃江县| 轮台县| 调兵山市| 观塘区| 河南省| 会泽县| 丘北县| 社旗县| 古丈县| 内乡县| 连平县| 吉木乃县| 家居| 崇信县| 肥乡县| 鄂托克旗| 四子王旗| 重庆市| 京山县| 诏安县| 西乌珠穆沁旗| 微山县|