<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制作拾色器!鼠標點擊即可獲取當前位置的顏色!

          共 1580字,需瀏覽 4分鐘

           ·

          2022-03-15 23:53

          大家好,歡迎來到 Crossin的編程教室 !

          我們做可視化經(jīng)常會遇到配色問題,如果是在PPT中,只需使用顏色填充的取色器功能,就可以獲取指定點的顏色,為自己作品增香添色。

          有人用Python也實現(xiàn)了一個類似的拾色器,今天就來講一講具體是怎么做到的!

          如上圖所示,運行時只需鼠標點擊,就可以獲取當前圖片位置的顏色。

          顏色值轉(zhuǎn)換

          opencv讀取圖片的默認像素排列是BGR,具體為什么這么設(shè)計,這里就不展開了,感興趣的小伙伴可以參考這篇文章:https://learnopencv.com/why-does-opencv-use-bgr-color-format/

          而實際上最常見的是RGB顏色,也是Photoshop中默認使用的顏色,也是最常用的一種顏色模式。RGB模式的圖像由3個顏色通道組成,分別為紅色通道(Red)、綠色通道(Green)和藍色通道(Blue),這三個通道組合可以產(chǎn)生1670萬余種不同的顏色。

          我們其實可以使用opencv自帶函數(shù),轉(zhuǎn)換圖像的R通道和B通道。

          cv2.cvtColor(img,?cv2.COLOR_BGR2RGB)

          另外,還有一些小伙伴更熟悉十六進制顏色碼。

          在搜索引擎中,可以輕松找到顏色值在線轉(zhuǎn)換網(wǎng)址。在Python中,則需要根據(jù)規(guī)則自定義個轉(zhuǎn)換函數(shù)。

          def?rgb2hex(RGB):
          ????text?=?'#'?+?''.join([hex(i)[-2:].replace('x',?'0')?for?i?in?list(map(int,?RGB))])
          ????return?text

          這樣就再也不怕顏色值轉(zhuǎn)換了。

          鼠標交互獲取顏色

          回到本文最開始,一個拾色器最核心的就是鼠標交互功能。

          #?定義鼠標交互函數(shù)

          def?get_Color(event,?x,?y,?flags,?param):
          ????if?event?==?cv2.EVENT_LBUTTONDOWN:
          ????????points?=?rgb2hex(img[y,?x])
          ????????print(points)
          ????????cv2.circle(img,?(x,?y),?3,?(255,?255,?255),?thickness=2)
          ????????cv2.putText(img,?points,?(x,?y),?cv2.FONT_HERSHEY_PLAIN,?2,?(0,?0,?0),?thickness=2)
          ????????cv2.imshow("image",?img)

          cv2.namedWindow("image")
          cv2.setMouseCallback("image",?get_Color)
          cv2.imshow("image",?img)
          cv2.waitKey(0)

          上述代碼中的opencv函數(shù)都比較好理解,簡單解釋一下其中的參數(shù)吧。

          cv2.circle()中的幾個參數(shù)分別為:圖片,圓心,半徑,顏色,線條的粗細。

          cv2.putText()中的幾個參數(shù)分別為:圖片,添加的文字,左上角坐標,字體,字體大小,顏色,字體粗細。

          運行效果:

          最后再驗證一下,提取到的顏色是否正確?

          可以拿一張帶有顏色碼的圖片,運行我們的程序試試。

          驗證成功,測試得到的十六進制顏色碼與正確答案一致!

          獲取本文相關(guān)的代碼和文件,請在公眾號后臺回復關(guān)鍵字:拾色器

          作者:朱小五

          來源:快學Python

          感謝轉(zhuǎn)發(fā)點贊的各位~

          _往期文章推薦_

          用Python給舊時光上色




          如需了解付費精品課程教學答疑服務
          請在Crossin的編程教室內(nèi)回復: 666

          瀏覽 78
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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片在线观看 | 人人撸在线视频 |