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);
من یک عکس دارم و میخوام توش خطها رو تشخیص بدم و بعدش فقط خطهای مستقیم (عمودی، افقی و یا کج ) و شکسته نشده رو نشون بدم با 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);