PDA

View Full Version : تشخیص خط در عکس



maryam_f
چهارشنبه 10 مهر 1392, 15:29 عصر
با سلام

من یک عکس دارم و می‌خوام توش خط‌ها رو تشخیص بدم و بعدش فقط خط‌های مستقیم (عمودی، افقی و یا کج ) و شکسته نشده رو نشون بدم با opencv.
مشکل من اینه که:

۱. با اینکه این کد‌ها رو نوشتم اما هیچ خطی‌ کشیده نمی‌شه!

۲. نمیدونم چجوری باید تفاوت خط شکسته رو از خط مستقیم تشخیص بدم.



کسی‌ می‌تونه کمکم کنه؟

خیلی‌ خیلی‌ ممنون میشم.

اینم کدی که نوشتم:

Mat_<uchar> map_Color2= red_image;
Point pt1, pt2;
Mat dst, cdst;
Canny(map_Color2, dst, 50, 200, 3);
cvtColor(dst, cdst, CV_GRAY2BGR);
vector<Vec2f> lines;
HoughLines( dst, lines, 1, CV_PI/180, 80 );
for( size_t i = 0; i < lines.size(); i++ )
{
float rho = lines[i][0], theta = lines[i][1];
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));


line( cdst, pt1, pt2, Scalar(0,255,0), 3, CV_AA);
}

resize(cdst, cdst, Size(1000, 1000), 0, 0, cv::INTER_AREA);

imshow("source", map_Color2);
imshow("detected lines", cdst);

saeedIRHA
سه شنبه 16 مهر 1392, 03:19 صبح
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

maryam_f
سه شنبه 16 مهر 1392, 21:57 عصر
ممنون از جوابتون.
با HoughLinesP نوشتم حل شد.

مصطفی ساتکی
دوشنبه 02 تیر 1393, 11:58 صبح
برای اطلاعات بیشتر به پست1 (http://www.7khatcode.com/index.php?qa=568&qa_1=%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D8%AE%D8%B7-%D8%AF%D8%B1-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1&show=670#a670)و پست 2 (http://www.7khatcode.com/index.php?qa=4519&qa_1=%DB%8C%D8%A7%D9%81%D8%AA%D9%86-%D8%AE%D8%B7%D9%88%D8%B7-%D8%A8%D8%B2%D8%B1%DA%AF%D8%AA%D8%B1-%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%BE%DB%8C%DA%A9%D8%B3%D9%84-%D8%A8%D8%A7-hough-line&show=4519#q4519) مراجعه کنید.