اذهب إلى المحتوى
  • 0

بايثون opencv تحديد دوائر

Engy Pearl

السؤال

import cv2
import numpy as np
from PIL import Image
# Read image.
from numpy import resize

img = cv2.imread('test2.jpg', cv2.IMREAD_COLOR)

# Convert to grayscale.
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Blur using 3 * 3 kernel.
gray_blurred = cv2.blur(gray, (3, 3))

# Apply Hough transform on the blurred image.
detected_circles = cv2.HoughCircles(gray_blurred,
				cv2.HOUGH_GRADIENT, 1, 20, param1 = 50,
			param2 = 30, minRadius = 10, maxRadius = 40)

# Draw circles that are detected.
if detected_circles is not None:

	# Convert the circle parameters a, b and r to integers.
	detected_circles = np.uint16(np.around(detected_circles))

	for pt in detected_circles[0, :]:
		a, b, r = pt[0], pt[1], pt[2]

		# Draw the circumference of the circle.
		cv2.circle(img, (a, b), r, (0, 255, 0), 2)

		# Draw a small circle (of radius 1) to show the center.
		cv2.circle(img, (a, b), 1, (0, 0, 255), 1)
		cv2.imshow("Detected Circle", img)
		cv2.waitKey(0)
اقتباس

الان الكود يقوم بتحديد الدوائر لكن كل واحدة تل والاخرى بعد اغلاق الشاشة عددت مرات في الصور احداهما عند تفعيل الكود والاخر بعد اغلاق الشاشة مرتين 

 

Screenshot 2022-08-14 115211.png

Screenshot 2022-08-14 115146.png

الفكرة بال for loop بنخرج اخر كودين خارج الloop وفقط من البداية بتم تحديد كل النقاط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 49 دقائق مضت قال Engy Pearl:

سألته وأجبته وهذه الصورة تفضل

كانت المشكلة أن كل دوران للحلقة يعرض صورة مع تحديد دائرة واحدة إضافة فيه مربع عرض.

يمكن وضع الأمرين خارج الحلقة وسيعمل على تجمع التحديد لصورة figure واحدة

if detected_circles is not None:

	# Convert the circle parameters a, b and r to integers.
	detected_circles = np.uint16(np.around(detected_circles))

	for pt in detected_circles[0, :]:
		a, b, r = pt[0], pt[1], pt[2]

		# Draw the circumference of the circle.
		cv2.circle(img, (a, b), r, (0, 255, 0), 2)

		# Draw a small circle (of radius 1) to show the center.
		cv2.circle(img, (a, b), 1, (0, 0, 255), 1)

# هناا
cv2.imshow("Detected Circle", img)
cv2.waitKey(0)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...