Changing Colorspaces
วัตถุประสงค์
- คุณจะได้เรียนรู้วิธีการแปลงภาพจากสีหนึ่งไปพื้นที่อื่นเช่น BGR ↔สีเทา, BGR ↔ HSV ฯลฯ
- เราจะสร้างโปรแกรมที่สารสกัดจากวัตถุสีในวิดีโอหนึ่ง
- คุณจะได้เรียนรู้การทำงานต่อไปนี้ cv2.cvtColor () cv2.inRange () เป็นต้น
การเปลี่ยนสีพื้นที่
มีมากกว่า 150 วิธีการแปลงสีที่มีอยู่ในพื้นที่ที่มี OpenCV แต่เราจะมีลักษณะเป็นเพียงสองข้อซึ่งมีการใช้กันอย่างแพร่หลายมากที่สุด BGR ↔สีเทาและ BGR ↔ HSV
สำหรับการแปลงสีเราจะใช้ฟังก์ชั่น cv2.cvtColor (input_image ธง) ซึ่งกำหนดประเภทของการแปลง
สำหรับการแปลง BGR →สีเทาที่เราใช้ cv2.COLOR_BGR2GRAY ในทำนองเดียวกันสำหรับ BGR → HSV เราใช้ cv2.COLOR_BGR2HSV ที่จะได้รับ เพียงแค่เรียกใช้คำสั่งใน terminal python ของคุณ
>>> import cv2 >>> flags = [i for i in dir(cv2) if i.startswith('COLOR_')] >>> print flags
ติดตามวัตถุ ตอนนี้เรารู้วิธีการแปลงภาพ BGR เพื่อ HSV เราสามารถใช้เพื่อดึงวัตถุสี ใน HSV เป็นตัวแทนของสีใน BGR สีพื้น ในโปรแกรมของเรา เราจะพยายามที่จะดึงวัตถุสีฟ้า ดังนั้นนี่คือวิธีการ
- ใช้เฟรมของวิดีโอในแต่ละลัน
- แปลงจาก BGR เพื่อ HSV สีพื้นที่
- เราเกณฑ์ภาพ HSV สำหรับช่วงของสีฟ้า
- ตอนนี้แยกวัตถุสีฟ้าคนเดียวที่เราสามารถทำสิ่งที่ภาพที่เราต้องการ
import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): # Take each frame _, frame = cap.read() # Convert BGR to HSV hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # define range of blue color in HSV lower_blue = np.array([110,50,50]) upper_blue = np.array([130,255,255]) # Threshold the HSV image to get only blue colors mask = cv2.inRange(hsv, lower_blue, upper_blue) # Bitwise-AND mask and original image res = cv2.bitwise_and(frame,frame, mask= mask) cv2.imshow('frame',frame) cv2.imshow('mask',mask) cv2.imshow('res',res) k = cv2.waitKey(5) & 0xFF if k == 27: break cv2.destroyAllWindows()
วิธีการหาค่า HSV ติดตามหรือไม่
>>> green = np.uint8([[[0,255,0 ]]]) >>> hsv_green = cv2.cvtColor(green,cv2.COLOR_BGR2HSV) >>> print hsv_green [[[ 60 255 255]]]
ตอนนี้คุณใช้ [H-10, 100,100] และ [H + 10, 255, 255] เป็นขอบเขตล่างและขอบเขตบนตามลำดับ นอกเหนือจากวิธีนี้คุณสามารถใช้เครื่องมือในการแก้ไขภาพใด ๆ เช่น GIMP หรือแปลงออนไลน์ใด ๆ ที่จะหาค่าเหล่านี้ แต่ไม่ลืมที่จะปรับช่วง HSV