
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

สวัสดี! วันนี้ผมจะแสดงวิธีง่ายๆ ในการตรวจจับสีจากวิดีโอสดโดยใช้ OpenCV และ python
โดยทั่วไปฉันจะทดสอบว่าสีที่ต้องการมีอยู่ในเฟรมพื้นหลังหรือไม่และโดยใช้โมดูล OpenCV ฉันจะปิดบังพื้นที่นั้นและแสดงเฟรมพร้อมกัน
ขั้นตอนที่ 1: ไฟล์ส่วนหัว

ตอนนี้ฉันใช้ไฟล์ส่วนหัวสองไฟล์คือ cv2 และ NumPy โดยทั่วไป cv2 คือไลบรารี OpenCV ซึ่งโหลดไฟล์ c++ ทั้งหมดที่สำคัญในขณะที่ใช้คำสั่งในโค้ด (มีคำจำกัดความทั้งหมด)
และ Numpy เป็นไลบรารี่หลามที่จำเป็นสำหรับการจัดเก็บอาร์เรย์หลายมิติ เราจะใช้เก็บพิกัดช่วงสีของเรา
และ numpy เนื่องจาก np ช่วยให้โค้ดของเราสั้นลงเล็กน้อยโดยใช้ np ทุกครั้งแทนที่จะเป็น numpy
ขั้นตอนที่ 2: จับภาพวิดีโอ

มันค่อนข้างง่ายในขณะที่ใช้ python ที่นี่เราเพียงแค่ต้องเปิดเครื่องบันทึกวิดีโอเพื่อให้สามารถเริ่มบันทึกเฟรมได้
ตอนนี้ค่าใน VideoCapture บ่งชี้กล้อง ในกรณีของฉัน กล้องเชื่อมต่อกับแล็ปท็อปของฉัน ดังนั้น 0
คุณสามารถไปได้เช่นเดียวกับ 1 สำหรับกล้องรองเป็นต้น VideoCapture สร้างวัตถุสำหรับมัน
ขั้นตอนที่ 3: จับเฟรมและกำหนดสี

ตอนนี้เราต้องทำอะไรบางอย่างเพื่อให้เราสามารถจับภาพเฟรมทันทีของวิดีโอ ซึ่งจะช่วยให้เราแยกภาพออกและเราสามารถทำงานตามความต้องการได้
ลูป "while" จะช่วยให้เรารันลูปตามเวลาที่ต้องการได้ ตอนนี้ใช้ " _, frame = cap.read() " เพื่อตรวจสอบความถูกต้องของ Frame ที่จับภาพและจัดเก็บไว้ "cap.read() เป็นตัวแปรบูลีนและคืนค่า จริง หากเฟรมอ่านถูกต้อง และหากคุณไม่มีเฟรม มันจะไม่แสดงข้อผิดพลาดใดๆ เลย คุณก็จะได้รับไม่มี
ตอนนี้บรรทัดที่ 11 และบรรทัดที่ 12 กำหนดช่วงของสีที่เราจำเป็นต้องตรวจจับโดยพื้นฐานแล้ว สำหรับสิ่งนี้ฉันเคยชินกับสีน้ำเงิน
คุณสามารถดำเนินการกับสีใดก็ได้ที่คุณต้องการเพียงพิมพ์ค่า BGR สำหรับสีนั้น ๆ ดีกว่าที่จะกำหนดสองอาร์เรย์โดยใช้อาร์เรย์ numpy เนื่องจากการตรวจจับสีใดสีหนึ่งในโลกแห่งความเป็นจริงจะไม่เป็นไปตามวัตถุประสงค์ของเรา แต่เราจะกำหนดช่วงของสีน้ำเงินเพื่อให้ตรวจพบภายในช่วง
สำหรับสิ่งนี้ ฉันได้กำหนดตัวแปรสองตัวที่จัดเก็บค่า BGR ที่ต่ำกว่าและค่า BGR ระดับบน
ขั้นตอนที่ 4: การกำบังและการแยกออก

งานหลักของการปิดบังเฟรมและการแยกสีของเฟรมมาถึงแล้ว ฉันใช้คำสั่งที่กำหนดไว้ล่วงหน้าที่มีอยู่ในไลบรารีใน OpenCV เพื่อทำการกำบัง โดยพื้นฐานแล้ว การมาสก์เป็นกระบวนการในการลบบางส่วนของเฟรมออก กล่าวคือ เราจะลบพิกเซลที่มีค่า BGR สีที่ไม่อยู่ในช่วงสีที่กำหนด และทำได้โดย cv2.inRange หลังจากนั้น เราใช้ช่วงสีกับรูปภาพที่ถูกปิดบังโดยขึ้นอยู่กับค่าพิกเซล และสำหรับสิ่งนี้ เราจะใช้ cv2.bitwise_and มันจะกำหนดสีให้กับพื้นที่ที่ถูกปกปิดโดยขึ้นอยู่กับค่ามาสก์และช่วงสี
ลิงค์สำหรับ cv2 bitwise_and:
ขั้นตอนที่ 5: ในที่สุดก็แสดง

ที่นี่ฉันได้ใช้ cv2.imshow() พื้นฐานสำหรับการแสดงแต่ละเฟรมเป็นรูปภาพ เนื่องจากฉันมีข้อมูลเฟรมที่เก็บไว้ในตัวแปร ฉันจึงสามารถดึงข้อมูลเหล่านั้นใน imshow() ที่นี่ฉันได้แสดงทั้งสามเฟรม ต้นฉบับ มาสก์ และสี
ตอนนี้เราต้องออกจากลูป while สำหรับสิ่งนี้ เราสามารถใช้ cv2.wait. Key() ได้ง่ายๆ โดยทั่วไปจะบอกเวลารอก่อนที่จะตอบสนอง ดังนั้นหากคุณผ่าน 0 มันจะรออย่างไม่สิ้นสุดและ 0xFF บอกว่าสถาปัตยกรรมเป็น 64 บิต " ord() " ระบุอักขระที่เมื่อกดจะรันคำสั่ง break in if block และมันจะออกมาจากลูป
จากนั้น cap.release() จะปิดเครื่องบันทึกวิดีโอและ cv2.destroyAllWindows() จะปิดหน้าต่างที่เปิดอยู่ทั้งหมด
หากคุณมีปัญหาใด ๆ โปรดแจ้งให้เราทราบ
ลิงก์ไปยังซอร์สโค้ด:
แนะนำ:
เครื่องสแกนโค้ด QR โดยใช้ OpenCV ใน Python: 7 ขั้นตอน

เครื่องสแกนรหัส QR การใช้ OpenCV ใน Python: ในโลกปัจจุบันนี้ เราเห็นรหัส QR และบาร์โค้ดถูกใช้เกือบทุกที่ตั้งแต่บรรจุภัณฑ์ของผลิตภัณฑ์ไปจนถึงการชำระเงินออนไลน์ และทุกวันนี้ เราเห็นรหัส QR แม้แต่ในร้านอาหารเพื่อดูเมนู ดังนั้นไม่ สงสัยว่าตอนนี้เป็นความคิดที่ยิ่งใหญ่ แต่เคยไหม
Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: 4 ขั้นตอน

Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: นี่เป็นเครื่องมือคิวบ์รูบิครุ่นที่ 2 ที่สร้างขึ้นสำหรับการแก้ผ้าปิดตา เวอร์ชันที่ 1 ได้รับการพัฒนาโดย javascript คุณสามารถเห็นโปรเจ็กต์ RubiksCubeBlindfolded1 ซึ่งต่างจากเวอร์ชันก่อนหน้า เวอร์ชันนี้ใช้ไลบรารี OpenCV เพื่อตรวจจับสีและเ
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 ขั้นตอน

Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: DESCRIÇÃOO ใช้งานง่าย é ดาร์ autonomia para deficientes visuais se locomoverem em Ambientes ในร่ม como casas ou ศูนย์การค้า e aeroportos.A locomoço สภาพแวดล้อม j´ mapeados pode ou n&o s
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 ขั้นตอน

Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: ความอัจฉริยะของ Lixeira ประกอบด้วยการแยกส่วนอัตโนมัติ เว็บแคม Através de uma, ela identifica o tipo de lixo e o deposita no compartimento adequado para posteriormente ser reciclado
การประมวลผลภาพด้วย Raspberry Pi: การติดตั้ง OpenCV และการแยกสีของภาพ: 4 ขั้นตอน

การประมวลผลภาพด้วย Raspberry Pi: การติดตั้ง OpenCV และการแยกสีของภาพ: โพสต์นี้เป็นบทแนะนำเกี่ยวกับการประมวลผลภาพชุดแรกในหลายๆ บทที่จะตามมา เราพิจารณาพิกเซลที่ประกอบเป็นรูปภาพอย่างละเอียดยิ่งขึ้น เรียนรู้วิธีติดตั้ง OpenCV บน Raspberry Pi และเรายังเขียนสคริปต์ทดสอบเพื่อจับภาพและค