国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        使用 OPENCV Python 進行顏色檢測和選擇

        2022-08-16 11:48
        磐創AI
        關注

        在今天的文章中,我們將討論如何使用 OpenCV-python 從圖像或視頻內容中檢測和選擇顏色。

        在開始之前,想指出你需要與本文一起完成的先決條件。首先,考慮到你已經了解編程,你需要知道如何在 OpenCV-python 中讀取和顯示圖像。

        讀取和顯示圖像

        這里的第一步是使用 opencv 從圖像文件中讀取和顯示圖像。為此,我們將使用下面的代碼片段:

        import cv2

        # read the image into memory

        img = cv2.imread("./images/image1.jpg")

        # resise the image

        img = cv2.resize(img, (640, 480))

        # create a window named image and display the image inside of it.

        cv2.imshow("Image", img)

        # wait untill a any key is pressed to quite the program

        cv2.waitKey(0)

        創建 Trackbar 滑動條

        為了檢測圖像中的顏色,我們需要將圖像轉換為 HSV(Hue Saturation Value)圖像。此圖像比例將允許用于在給定的 UPPER 和 LOWER 范圍內選擇顏色。

        在本節中,讓我們繼續編寫代碼來創建滑動條,并從滑塊中提取值作為用戶輸入。

        為此,我們的代碼需要進行更多更改。它現在應該是這樣的。

        import cv2

        import numpy as np

        def do_nothing():

           pass

        # create slider here

        cv2.namedWindow("Slider")

        cv2.resizeWindow("Slider", 640, 480)

        cv2.createTrackbar("Hue Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Hue Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Max", "Slider", 0, 255, do_nothing)

        img = cv2.imread("./images/image1.jpg")

        img = cv2.resize(img, (640, 480))

        while True:
         

           # extract the values from the trackbar

           hue_min = cv2.getTrackbarPos("Hue Min", "Slider")

           hue_max = cv2.getTrackbarPos("Hue Max", "Slider")

           sat_min = cv2.getTrackbarPos("Saturation Min", "Slider")

           sat_max = cv2.getTrackbarPos("Saturation Max", "Slider")

           val_min = cv2.getTrackbarPos("Value Min", "Slider")

           val_max = cv2.getTrackbarPos("Value Max", "Slider")
           

           print(hue_min, hue_max, sat_min, sat_max, val_min, val_max)
           


           if cv2.waitKey(1) & 0xFF == ord("q"):

               break

        cv2.destroyAllWindows()

        將圖像轉換為 HSV 比例

        現在我們能夠讓滑塊和滑動條正常工作,讓我們繼續將我們的圖像轉換為 HSV 比例,然后能夠在特定顏色范圍內選擇顏色。

        我們可以用第35行的代碼做到這一點

        import cv2

        import numpy as np

        def do_nothing():

           pass

        # create slider here

        cv2.namedWindow("Slider")

        cv2.resizeWindow("Slider", 640, 480)

        cv2.createTrackbar("Hue Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Hue Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Max", "Slider", 0, 255, do_nothing)


        img = cv2.imread("./images/image1.jpg")

        img = cv2.resize(img, (640, 480))

        while True:
         

           # extract the values from the trackbar

           hue_min = cv2.getTrackbarPos("Hue Min", "Slider")

           hue_max = cv2.getTrackbarPos("Hue Max", "Slider")

           sat_min = cv2.getTrackbarPos("Saturation Min", "Slider")

           sat_max = cv2.getTrackbarPos("Saturation Max", "Slider")

           val_min = cv2.getTrackbarPos("Value Min", "Slider")

           val_max = cv2.getTrackbarPos("Value Max", "Slider")
           

        #     print(hue_min, hue_max, sat_min, sat_max, val_min, val_max)
           

           # convert to HSV image

           hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
           

           if cv2.waitKey(1) & 0xFF == ord("q"):

               break

        cv2.destroyAllWindows()

        得到我們想要的顏色的上下界

        現在我們已經將圖像轉換為 HSV 比例,我們將更多地了解我們想要檢測和選擇的顏色的上限和下限。我們分別使用第35行和第36行的代碼來執行此操作。

        注意:確保此時已導入 numpy,否則會出現一些錯誤,numpy 預裝了 OpenCV-Python。

        import cv2

        import numpy as np

        def do_nothing():

           pass

        # create slider here

        cv2.namedWindow("Slider")

        cv2.resizeWindow("Slider", 640, 480)

        cv2.createTrackbar("Hue Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Hue Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Max", "Slider", 0, 255, do_nothing)

        img = cv2.imread("./images/image1.jpg")

        img = cv2.resize(img, (640, 480))

        while True:
         

           # extract the values from the trackbar

           hue_min = cv2.getTrackbarPos("Hue Min", "Slider")

           hue_max = cv2.getTrackbarPos("Hue Max", "Slider")

           sat_min = cv2.getTrackbarPos("Saturation Min", "Slider")

           sat_max = cv2.getTrackbarPos("Saturation Max", "Slider")

           val_min = cv2.getTrackbarPos("Value Min", "Slider")

           val_max = cv2.getTrackbarPos("Value Max", "Slider")
           

        #     print(hue_min, hue_max, sat_min, sat_max, val_min, val_max)

           # set bounds

           lower_bound = np.array([hue_min, sat_min, val_min])

           upper_bound = np.array([hue_max, sat_max, val_max])
           

           # convert to HSV image

           hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
           

           if cv2.waitKey(1) & 0xFF == ord("q"):

               break

        cv2.destroyAllWindows()

        創建一個掩碼并將其用于 Bitwise_and 操作

        現在,我們需要創建一個圖像掩碼,并使用它來執行按位操作,使用用戶使用滑動條設置的 UPPER 邊界和 LOWER 邊界。

        這將使我們能夠選擇該顏色范圍內的顏色。我們的代碼現在應該如下所示,分別在第43行和第46行進行了更改。

        在第50行,我們簡單地顯示圖像,F在你可以調整滑塊并選擇你選擇的不同顏色。

        import cv2

        import numpy as np

        def do_nothing():

           pass

        # create slider here

        cv2.namedWindow("Slider")

        cv2.resizeWindow("Slider", 640, 480)

        cv2.createTrackbar("Hue Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Hue Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Max", "Slider", 0, 255, do_nothing)

        img = cv2.imread("./images/image1.jpg")

        img = cv2.resize(img, (640, 480))


        while True:
         

           # extract the values from the trackbar

           hue_min = cv2.getTrackbarPos("Hue Min", "Slider")

           hue_max = cv2.getTrackbarPos("Hue Max", "Slider")

           sat_min = cv2.getTrackbarPos("Saturation Min", "Slider")

           sat_max = cv2.getTrackbarPos("Saturation Max", "Slider")

           val_min = cv2.getTrackbarPos("Value Min", "Slider")

           val_max = cv2.getTrackbarPos("Value Max", "Slider")
           

        #     print(hue_min, hue_max, sat_min, sat_max, val_min, val_max)

           # set bounds

           lower_bound = np.array([hue_min, sat_min, val_min])

           upper_bound = np.array([hue_max, sat_max, val_max])
           

           # convert to HSV image

           hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
           

           # create mask

           mask = cv2.inRange(hsv_img, lower_bound, upper_bound)
         

           #  we perform bitwise and operation here

           resulting_img = cv2.bitwise_and(img, img, mask=mask)
           
           

           # display the image here

           cv2.imshow("Image", resulting_img)
           

           if cv2.waitKey(1) & 0xFF == ord("q"):

               break


        cv2.destroyAllWindows()

        最后的潤色

        現在我們已經做到了這一點,讓我們堆疊圖像以獲得更好的演示。可以在此代碼段中找到此代碼。

        在第46行,我們創建了一個堆疊圖像并將其顯示在第49行。

        import cv2

        import numpy as np

        def do_nothing():

           pass

        # create slider here

        cv2.namedWindow("Slider")

        cv2.resizeWindow("Slider", 640, 480)

        cv2.createTrackbar("Hue Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Hue Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Saturation Max", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Min", "Slider", 0, 255, do_nothing)

        cv2.createTrackbar("Value Max", "Slider", 0, 255, do_nothing)

        img = cv2.imread("./images/image1.jpg")

        img = cv2.resize(img, (640, 480))

        while True:

           hue_min = cv2.getTrackbarPos("Hue Min", "Slider")

           hue_max = cv2.getTrackbarPos("Hue Max", "Slider")

           sat_min = cv2.getTrackbarPos("Saturation Min", "Slider")

           sat_max = cv2.getTrackbarPos("Saturation Max", "Slider")

           val_min = cv2.getTrackbarPos("Value Min", "Slider")

           val_max = cv2.getTrackbarPos("Value Max", "Slider")

           # set bounds

           lower_bound = np.array([hue_min, sat_min, val_min])

           upper_bound = np.array([hue_max, sat_max, val_max])

           # convert to HSV image

           hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

           # create mask

           mask = cv2.inRange(hsv_img, lower_bound, upper_bound)


           resulting_img = cv2.bitwise_and(img, img, mask=mask)


           stacked_imgs = np.hstack([img, resulting_img])

        #     create a stacked image of the original and the HSV one.

           cv2.imshow("Image", stacked_imgs)

           if cv2.waitKey(1) & 0xFF == ord("q"):

               break

        cv2.destroyAllWindows()

        結論

        有關該項目的視頻說明,請查看:

        image.png

               原文標題 : 使用 OPENCV Python 進行顏色檢測和選擇

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 性中国熟妇| 欧美射图| 99精品丰满人妻无码一区二区| 91视频你懂的| 老司机玖玖在線| 蜜臂AV| 亚洲图片另类| 丰满熟女人妻一区二区三| 正宁县| 怡春院av| 葫芦岛市| 无码人妻av一区二区三区蜜桃| 商丘市| 人人插人人| 男人天堂久久| 影音先锋资源在线| 榆树市| 札达县| 2014AV天堂网| 3p视频在线观看| 毛片自拍| 无码久久久| 亚洲wwww| 巫溪县| 谷城县| 久草精品视频| 西和县| 邯郸市| 国产一区二区三区18| 日韩激情一区二区| 德州市| 日韩肏屄| 亚洲成人性爱网| 黄网免费观看| 中文字幕人妻系列| 丰满午夜人妻无码AAAA| 超碰国产在线| 鹿泉市| 露脸丨91丨九色露脸| 国产黄色在线| 伊人在线视频|