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

ค้นหาแวดวงในรูปภาพโดยใช้ OpenCV ใน Python


แพลตฟอร์ม OpenCV มีไลบรารี cv2 สำหรับ python สามารถใช้สำหรับการวิเคราะห์รูปร่างต่างๆ ซึ่งเป็นประโยชน์ในการมองเห็นด้วยคอมพิวเตอร์ ในบทความนี้ เราจะระบุรูปร่างของวงกลมโดยใช้ Open CV เพื่อที่เราจะใช้ฟังก์ชัน cv2.HoughCircles() ค้นหาวงกลมในภาพระดับสีเทาโดยใช้การแปลง Hough ในตัวอย่างด้านล่าง เราจะใช้รูปภาพเป็นอินพุต จากนั้นทำสำเนาและใช้ฟังก์ชันการแปลงนี้เพื่อระบุวงกลมในผลลัพธ์

ไวยากรณ์

cv2.HoughCircles(image, method, dp, minDist)
Where
Image is the image file converted to grey scale
Method is the algorithm used to detct the circles.
Dp is the inverse ratio of the accumulator resolution to the image resolution.
minDist is the Minimum distance between the center coordinates of detected circles.

ตัวอย่าง

ในตัวอย่างด้านล่าง เราใช้รูปภาพด้านล่างเป็นรูปภาพอินพุตของเรา จากนั้นเรียกใช้โปรแกรมด้านล่างเพื่อรับแวดวง

ค้นหาแวดวงในรูปภาพโดยใช้ OpenCV ใน Python

โปรแกรมด้านล่างตรวจพบว่ามีวงกลมอยู่ในไฟล์รูปภาพ หากมีวงกลมอยู่ แสดงว่ามีการไฮไลต์

ตัวอย่าง

import cv2
import numpy as np
image = cv2.imread('circle_ellipse_2.JPG')
output = image.copy()
img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Find circles
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1.3, 100)
# If some circle is found
if circles is not None:
   # Get the (x, y, r) as integers
   circles = np.round(circles[0, :]).astype("int")
   print(circles)
   # loop over the circles
   for (x, y, r) in circles:
      cv2.circle(output, (x, y), r, (0, 255, 0), 2)
# show the output image
cv2.imshow("circle",output)
cv2.waitKey(0)

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

[[93 98 84]]

และเราได้แผนภาพด้านล่างที่แสดงผลลัพธ์

ค้นหาแวดวงในรูปภาพโดยใช้ OpenCV ใน Python