1. 程式人生 > 程式設計 >python opencv根據顏色進行目標檢測的方法示例

python opencv根據顏色進行目標檢測的方法示例

顏色目標檢測就是根據物體的顏色快速進行目標定位。使用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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。