<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于Python的顏色識(shí)別器

          共 2445字,需瀏覽 5分鐘

           ·

          2020-10-02 10:07

          點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          在這篇文章中,我們將展示如何使用Python構(gòu)建顏色識(shí)別器。此過(guò)程也稱為“顏色檢測(cè)”。我們將創(chuàng)建一個(gè)基本應(yīng)用程序,該應(yīng)用程序?qū)椭覀儥z測(cè)圖像中的顏色。該程序還將返回顏色的RGB值。構(gòu)建顏色識(shí)別器是Computer Vision中最基礎(chǔ)的項(xiàng)目。

          如果大家以前從未聽(tīng)說(shuō)過(guò)Computer Vision,那么這是了解它的最佳時(shí)間。大多數(shù)機(jī)器學(xué)習(xí)和人工智能領(lǐng)域都與計(jì)算機(jī)視覺(jué)緊密相關(guān)。隨著我們的發(fā)展和探索,看到外部世界對(duì)我們的發(fā)展具有重大影響。對(duì)于機(jī)器來(lái)說(shuō),情況也是如此,他們使用圖像看到外界,并且這些圖像被轉(zhuǎn)換為計(jì)算機(jī)可以理解的數(shù)據(jù)值。

          目錄

          ? 入門(mén)

          ? 庫(kù)

          ? 定義圖片

          ? 顏色識(shí)別

          ? 應(yīng)用

          ? 結(jié)果

          入門(mén)

          我們將為此項(xiàng)目使用三個(gè)主要模塊。它們是NumPy,Pandas和OpenCv。OpenCv是一個(gè)高度優(yōu)化的庫(kù),專注于實(shí)時(shí)應(yīng)用程序。

          OpenCV(開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù))是一個(gè)開(kāi)源計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù)。OpenCV的構(gòu)建旨在為計(jì)算機(jī)視覺(jué)應(yīng)用程序提供通用的基礎(chǔ)結(jié)構(gòu),并加速在商業(yè)產(chǎn)品中使用機(jī)器感知。

          資料來(lái)源:https?:?//opencv.org

          庫(kù)

          如前所述,我們將在此項(xiàng)目中使用三個(gè)模塊。要使用這些模塊,我們必須安裝必要的庫(kù)。使用pip安裝庫(kù)非常簡(jiǎn)單。Pip是程序包管理工具。我們將使用命令行界面進(jìn)行安裝。這是一次安裝所有3個(gè)庫(kù)的行:

          pip install numpy pandas opencv-python

          安裝完成后,我們必須將它們導(dǎo)入到我們的程序中。在大家喜歡的代碼編輯器中打開(kāi)一個(gè)新文件。以下是有關(guān)如何導(dǎo)入已安裝庫(kù)的代碼:

          import numpy as np
          import pandas as pd
          import cv2

          OpenCv導(dǎo)入為cv2。對(duì)于其他庫(kù),我們將它們“ as”導(dǎo)入,以便在程序中更輕松地調(diào)用它們。

          完善!現(xiàn)在,我們可以進(jìn)行下一步,在此步驟中,我們將定義要用于測(cè)試顏色識(shí)別器應(yīng)用程序的圖像。

          定義圖片

          您可以選擇任何想要的圖像。我將圖像保存在與程序相同的文件夾中,這使查找和導(dǎo)入更加容易。

          img = cv2.imread("color_image.jpg")

          為了給您一些想法,這是我將用于此項(xiàng)目的圖像:

          大家準(zhǔn)備好進(jìn)行一些編程了嗎?讓我們繼續(xù)下一步。

          顏色識(shí)別

          我問(wèn)大家一個(gè)好問(wèn)題。小伙伴們知道機(jī)器就相當(dāng)于一張白紙嗎?我們認(rèn)為是因?yàn)樗麄儗W(xué)到了教給他們的東西。

          教授色彩

          首先,我們必須教給他們什么是顏色。為此,我們需要包含顏色名稱和一些與這些顏色匹配的值的數(shù)據(jù)。由于大多數(shù)顏色都可以使用紅色,綠色和藍(lán)色定義。這就是為什么我們將RGB格式用作數(shù)據(jù)點(diǎn)的原因。我找到了一個(gè)準(zhǔn)備就緒的csv文件,其中包含大約1000個(gè)顏色名稱和RGB值。下面是相關(guān)鏈接:

          https://github.com/codebrainz/color-names/blob/master/output/colors.csv

          我們將在程序中使用此csv文件。該文件的屏幕截圖可讓您有所了解:

          colors.csv

          讓我們使用read_csv方法將colors.csv文件導(dǎo)入到我們的程序中。由于我們下載的csv文件沒(méi)有列名,因此我將在程序中定義它們。此過(guò)程稱為數(shù)據(jù)處理。

          index=["color", "color_name", "hex", "R", "G", "B"]csv = pd.read_csv('colors.csv', names=index, header=None)


          全局變量

          在以下步驟中,我們將定義兩個(gè)函數(shù)。為了使應(yīng)用程序順利運(yùn)行,我們需要一些全局變量。大家將了解全局變量在使用函數(shù)時(shí)是如何幫助大家的。

          clicked = False
          r = g = b = xpos = ypos = 0

          顏色識(shí)別功能

          當(dāng)我們雙擊圖像的某個(gè)區(qū)域時(shí),將調(diào)用此函數(shù)。它將返回顏色名稱和該顏色的RGB值。這就是神奇的地方!

          def recognize_color(R,G,B):    minimum = 10000    for i in range(len(csv)):        d = abs(R- int(csv.loc[i,"R"])) + abs(G- int(csv.loc[i,"G"]))+ abs(B- int(csv.loc[i,"B"]))        if(d<=minimum):            minimum = d            cname = csv.loc[i,"color_name"]    return cname

          鼠標(biāo)點(diǎn)擊功能

          此函數(shù)用于定義我們的雙擊過(guò)程。在創(chuàng)建應(yīng)用程序部分時(shí),我們將需要它。

          def mouse_click(event, x, y, flags, param):    if event == cv2.EVENT_LBUTTONDBLCLK:        global b,g,r,xpos,ypos, clicked        clicked = True        xpos = x        ypos = y        b,g,r = img[y,x]        b = int(b)        g = int(g)        r = int(r)

          希望大家繼續(xù)和我在一起!看起來(lái)可能有些復(fù)雜,但是當(dāng)我們開(kāi)始在編輯器中編寫(xiě)它們時(shí),大局就會(huì)顯現(xiàn)出來(lái)。我們盡量使事情變得簡(jiǎn)單易懂。


          應(yīng)用

          很高興大家能完成此步驟。在這一步中,我們將使用OpenCV方法將圖像作為新窗口打開(kāi)。在該窗口中,我們將使用我們先前定義的功能。該應(yīng)用程序非常簡(jiǎn)單,當(dāng)我們雙擊圖像上的某個(gè)區(qū)域時(shí),它將返回顏色名稱和顏色值。

          應(yīng)用窗口

          首先,讓我向大家展示如何使用OpenCV將圖像文件作為新窗口打開(kāi)。

          cv2.namedWindow('Color Recognition App')

          其次,讓我們調(diào)用我們創(chuàng)建的鼠標(biāo)單擊功能。這為我們的應(yīng)用程序提供了更多功能。

          cv2.setMouseCallback('Color Recognition App',mouse_click)

          應(yīng)用程序

          這是while循環(huán),用于啟動(dòng)我們的應(yīng)用程序窗口。

          while(1):cv2.imshow("Color Recognition App",img)    if (clicked):           #cv2.rectangle(image, startpoint, endpoint, color, thickness)-1 fills entire rectangle         cv2.rectangle(img,(20,20), (750,60), (b,g,r), -1)#Creating text string to display( Color name and RGB values )        text = recognize_color(r,g,b) + ' R='+ str(r) +  ' G='+ str(g) +  ' B='+ str(b)                #cv2.putText(img,text,start,font(0-7),fontScale,color,thickness,lineType )        cv2.putText(img, text,(50,50),2,0.8,(255,255,255),2,cv2.LINE_AA)#For very light colours we will display text in black colour        if(r+g+b>=600):            cv2.putText(img, text,(50,50),2,0.8,(0,0,0),2,cv2.LINE_AA)                    clicked=False

          關(guān)閉申請(qǐng)

          如果您使用過(guò)OpenCV項(xiàng)目,則可能熟悉此步驟。我們必須定義如何結(jié)束和關(guān)閉應(yīng)用程序窗口。否則,它將因?yàn)槲覀兪褂?/span>while(1)啟動(dòng)應(yīng)用程序永遠(yuǎn)運(yùn)行。添加以下行是您未來(lái)項(xiàng)目的一個(gè)好習(xí)慣。

          #Break the loop when user hits 'esc' key        if cv2.waitKey(20) & 0xFF ==27:        breakcv2.destroyAllWindows()

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码AV影视 | 刘玥一级婬片A片AAA | 国产久久久精品1000部视频 | 婷婷五月天 亚洲 | 一个色综合网 |