python opencv根據顏色進行目標檢測的方法示例
阿新 • • 發佈:2020-01-16
顏色目標檢測就是根據物體的顏色快速進行目標定位。使用cv2.inRange函式設定合適的閾值,即可以選出合適的目標。
建立專案colordetect.py,程式碼如下:
#! /usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import cv2 def colorDetect(): image = cv2.imread('./1.png') # 使用RGB顏色空間檢測紅 藍 黃 灰,設定合適的閾值 boundaries = [ ([17,15,100],[50,56,200]),([86,31,4],[220,88,50]),([25,146,190],[62,174,250]),([103,86,65],[145,133,128]) ] for lower,upper in boundaries: lower = np.array(lower,dtype='uint8') upper = np.array(upper,dtype='uint8') # 低於lower和高於upper的畫素為黑色,lower-upper之間的畫素為白色 mask = cv2.inRange(image,lower,upper) # 利用蒙版,進行影象的邏輯與運算 output = cv2.bitwise_and(image,image,mask=mask) cv2.imshow('image',np.hstack([image,output])) cv2.waitKey(0) cv2.destroyAllWindows() def main(): colorDetect() if __name__ == "__main__": main()
定義RGB顏色列表:
boundaries = [ ([17,128]) ]
該部分([17,200]),表示影象畫素R>=100,B>=15,G>=15和R<=200,B<=56,G<=50的畫素將視為紅色。
執行程式碼,結果如下:
總結
要檢測影象中顏色,第一件事要做的就是定義畫素值的上限和下限。不同的顏色空間具有不同上下限值,定義了上限和下限後,就可以呼叫cv2.inRange方法返回一個mask,將該mask與影象進行邏輯與bitwise_and就可以得到該影象。
參考資料
https://www.pyimagesearch.com
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。