Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module


การทำงานพื้นฐานของ OpenCV คือการวาดภาพทับ ความสามารถในการเพิ่มรูปทรงเรขาคณิตต่างๆ เช่น เส้น วงกลม และสี่เหลี่ยมผืนผ้า เป็นต้น

บ่อยครั้งที่ทำงานกับการวิเคราะห์ภาพ เราต้องการเน้นส่วนของภาพ เช่น โดยการเพิ่มสี่เหลี่ยมผืนผ้าที่กำหนดส่วนนั้น เป็นตัวอย่างลูกศรเพื่อระบุบางสิ่งด้วย

cv2.line() - ฟังก์ชันนี้ใช้เพื่อวาดเส้นบนรูปภาพ

cv2.rectangle() - ฟังก์ชันนี้ใช้เพื่อวาดรูปสี่เหลี่ยมผืนผ้าบนรูปภาพ

cv2.circle() - ฟังก์ชันนี้ใช้วาดวงกลมบนรูปภาพ

cv2.putText() - ฟังก์ชันนี้ใช้สำหรับเขียนข้อความบนรูปภาพ

cv2.ellipse() - ฟังก์ชันนี้ใช้เพื่อวาดวงรีบนรูปภาพ

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros((350, 350, 3), dtype ="uint8")cv2.imshow('Window', my_img)cv2.waitKey(0)cv2.destroyAllWindows() 

ผลลัพธ์

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module

การวาดเส้น

สำหรับการวาดเส้น cv2.line() จะใช้ฟังก์ชัน ฟังก์ชันนี้รับห้าอาร์กิวเมนต์

  • วัตถุรูปภาพที่จะวาด
  • พิกัดจุดเริ่มต้น (x, y)
  • พิกัดจุดสิ้นสุด (x, y)
  • สีสโตรคใน BGR (ไม่ต้องระบุ RGB)
  • ความหนาของเส้น (เป็นพิกเซล)

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros((350, 350, 3), dtype ="uint8")# กำลังสร้างสำหรับ linecv2.line(my_img, (202, 220), (100, 160), (0 , 20, 200), 10)cv2.imshow('หน้าต่าง', my_img)cv2.waitKey(0)cv2.destroyAllWindows()

ผลลัพธ์

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module

การวาดรูปสี่เหลี่ยมผืนผ้า

สำหรับการวาดรูปสี่เหลี่ยมผืนผ้าจะใช้ฟังก์ชัน cv2.rectangle() ฟังก์ชันนี้ยอมรับพารามิเตอร์อินพุตห้าตัว

  • วัตถุรูปภาพที่จะวาด
  • พิกัดของจุดยอดด้านซ้ายบน (x, y)
  • พิกัดของจุดยอดขวาล่าง (x, y)
  • สีสโตรคใน BGR (ไม่ต้องระบุ RGB)
  • ความหนาของเส้น (เป็นพิกเซล)

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros((400, 400, 3), dtype ="uint8")# การสร้างสี่เหลี่ยมผืนผ้าcv2.rectangle(my_img, (30, 30), (300, 200), (0 , 20, 200), 10)cv2.imshow('Window', my_img)# ช่วยให้เราเห็นภาพ# จนกระทั่งปิดอย่าง Forcelycv2.waitKey(0)cv2.destroyAllWindows()

ผลลัพธ์

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module

การวาดวงกลม

สำหรับการวาดวงกลม ใช้ฟังก์ชัน cv2.circle() ฟังก์ชันนี้ยอมรับพารามิเตอร์อินพุตห้าตัว

  • วัตถุรูปภาพที่จะวาด
  • พิกัดศูนย์ (x, y)
  • รัศมีของวงกลม
  • สีสโตรคใน BGR (ไม่ต้องระบุ RGB)
  • ความหนาของเส้น (เป็นพิกเซล)

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros((400, 400, 3), dtype ="uint8")# กำลังสร้าง circlecv2.circle(my_img, (200, 200), 80, (0, 20, 200) , 10)cv2.imshow('Window', my_img)cv2.waitKey(0)cv2.destroyAllWindows()

ผลลัพธ์

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module

การวาดวงรี

สำหรับการวาดวงรีจะใช้ฟังก์ชัน cv2.ellipse() ฟังก์ชันนี้ยอมรับพารามิเตอร์อินพุตแปดตัว

  • วัตถุรูปภาพที่จะวาดภาพ
  • พิกัดศูนย์ (x, y)
  • ความยาวของแกนรองและแกนหลัก (h, w)
  • มุมการหมุนของวงรี (คำนวณทวนเข็มนาฬิกา)
  • มุมเริ่มต้น (คำนวณตามเข็มนาฬิกา)
  • มุมสุดท้าย (คำนวณตามเข็มนาฬิกา)
  • สีสโตรกใน BGR (ไม่ระบุ RGB)
  • ความหนาของจังหวะ

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros((400, 400, 3), dtype ="uint8")# กำลังสร้างสำหรับสี่เหลี่ยมผืนผ้าcv2.ellipse(my_img,(256,256),(100,50),0,0,180,255, -1)cv2.imshow('Window', my_img)# ช่วยให้เราเห็นภาพ# จนกระทั่งปิดอย่าง Forcelycv2.waitKey(0)cv2.destroyAllWindows()

ผลลัพธ์

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module

การวาดรูปหลายเหลี่ยม

สำหรับการวาดรูปหลายเหลี่ยมจะใช้ฟังก์ชัน cv2.polylines() ฟังก์ชันนี้ต้องการอาร์กิวเมนต์ห้าจำนวน

  • วัตถุรูปภาพที่จะวาด
  • อาร์เรย์ของพิกัด
  • จริงครับ ถ้าเป็นเส้นปิด
  • สีสโตรก
  • ความหนาของจังหวะ

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros((400, 400, 3), dtype ="uint8")pts =np.array([[10,5],[20,30],[70,20 ],[50,10]], np.int32)pts =pts.reshape((-1,1,2))cv2.polylines(my_img,[pts],True,(0,255,255))cv2.imshow('หน้าต่าง ', my_img)cv2.waitKey(0)cv2.destroyAllWindows()

เอาท์พุต

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module

การวาดข้อความ

ในการเขียนข้อความด้วย OpenCV มีฟังก์ชัน cv2.putText() ที่ยอมรับอาร์กิวเมนต์จำนวนหนึ่ง

  • ภาพที่จะวาด
  • ข้อความที่จะเขียน
  • พิกัดของจุดเริ่มต้นข้อความ
  • ฟอนต์ที่จะใช้
  • ขนาดตัวอักษร
  • สีข้อความ
  • ความหนาของข้อความ
  • ประเภทของสายที่ใช้

โค้ดตัวอย่าง

นำเข้า numpy เป็น npimport cv2my_img =np.zeros ((400, 400, 3), dtype ="uint8")# การเขียน textfont =cv2.FONT_HERSHEY_SIMPLEXcv2.putText(my_img, 'Tutorials Point', (50, 50), แบบอักษร 0.8, (255, 0, 0), 2, cv2.LINE_AA)cv2.imshow('Window', my_img)cv2.waitKey(0)cv2.destroyAllWindows()

ผลลัพธ์

วาดรูปทรงเรขาคณิตบนรูปภาพโดยใช้ Python OpenCv module