در قسمتی از کد
که اومدیم ارای مثلث رو دراوردیم چرا باید حتما ارای ما داخل ۳ [] باشه
سلام
وقت بخیر
اگه خوب متوجه منظورتون شده باشم. منظورتون بخش مربوط به کراپ کردن region of interest بوده، خوب ما یه ارایه سه تایی ایجاد کردیم که مختصات هر ضلع مثلث را مشخص کنیم.
اگر سوالتون مسئله ی دیگری هست لطفا مشخص تر بفرمایید که مروط به چه بخش یا قسمتی می باشد.
با تشکر
ma umadim ye array tarif kardim ke 3 array dakhel ham bood
be in soorat:
[[[ 200 704]
[1100 704]
[ 550 250]]]
khob ma agar in ro dakhel 1 array bezarim na dota error mide
be in shekl bashe array:
[[ 200 704]
[1100 704]
[ 550 250]]
dalilesh chie va man ye soal ham darmored in code daram ke aslan nafahmidm chi be chie
aslan nemidoonam value ha i ke midim daqiqan chian
masalan chra np.180
agar ax avaz she bazam hamine value
hamintor 2 ke mikham bedoonam dorost fahmidam ya na 2
2 inja be mani 2 pixle hast doroste?
lines = cv2.HoughLinesP(cropped_image, 2, np.pi/180, 100, np.array([]), minLineLength=40, maxLineGap=5)
mamnoon az amoozesh khoobetun va mazerat mikham bekhater soal haye ziadam:)
دوست عزیز ابتدا با سوال دوم شما شروع می کنیم.
ابتدا در بحث تئوری با مفهوم hough line و لزوم استفاده اش جهت پیدا کردن خطوط استفاده کردیم.
حالا دو نوع houghline در کتابخانه Open Cv داریم:
Standard HoughLines
و
Probabilistics HoughLines
که در اینجا ما با روش دوم کار می کنیم که دلیلشم هم اینه که خروجیه این تابع خطوط به صورت مختصات کارتزین هستن یعنی مختصات ورودی و خروجی رو می گیریم که اینجا به صورت lines تعریفش کردیم. حالا بریم سراغ argument های تابع HoughLinesP :
rho :رزولوشن پارامترها در مقیاس پیکسل معمولا برای مسائل مختلف از یک یا دو استفاده میشه. اینجا ما از 2 استفاده کردیم اما شما میتونید با تغییرش اثرش رو توی مسئله ببینید. با تغییر این مقدار در مقدار رادیان رزولوشن ما تغییر می کنه و در کل سایز پیکسل نباید اون قدری بزرگ بشه که دقت رو بیاره پایین و نه اونقدر کوچک باشه که مقدار محاسبات و زمان آن زیادی بالا بره
theta: رزولوشن پارامترها در جهت رادیان(چون اینجا به جای کارتزین توی سیستم قطبی کار می کنیم)
توی تصویر زیر میتونید به وضوح با دو پارامتر رادیان و رو و اثرشون روی سایز پیکسل ها و در نهایت رزولوشن بهتر آشنا بشید:
threshold: حداقل نقاطی که برای تشخیص یک خط باید همدیگرو قطع کنند.
minLinLength: حداقل تعداد نقاطی که برای رسم یک خط نیاز هستند .
maxLineGap: بیشترین فاصله میان دو نقطه مجزا در یک خط برای اینکه به عنوان خط در نظر گرفته شوند.
cv2.HoughLinesP(image,rho, theta, threshold, np.array ([ ]), minLineLength=xx, maxLineGap=xx)
در خصوص سوال اولتون هم باید بگم مختصات هر ضلع مثلث توی پرانتز آورده شده است نه براکت.
برای رسم یک مثلث با استفاده از پایتون شما نیاز دارید که ایتدا مختصات هر ضلع را مشخص کنید و بعد اون ها را توی یه آرایه بیارید. اگه نیاز به یادآوری در بخش آرایه ها دارید میتونید بخش رو مجددا مشاهده کنید.
به عنوان مثال برای تعریف یک مثلث اینگونه عمل می کنیم:
numpy
import numpy as np p1 = (10, 20)p2 = (21, 15)p3 = (33, 1) tri3d = np.array([p1, p2, p3])
امیدوارم که پاسخ سوالاتتون رو به صورت واضح گرفته باشید.
بازم اگه نکته ای گنگ بود میتونید مطرحش کنید
موفق باشید