opencv 在感兴趣的区域内检测直线
比如一幅图片已经显示出来了设定,这幅图叫dst,怎么在其中设定一块感兴趣区域,比如叫roi,然后在roi范围内找出直线我已经实现了在整个图片中检测直线,但是不知道怎么设定...
比如一幅图片已经显示出来了设定,这幅图叫dst,怎么在其中设定一块感兴趣区域,比如叫roi,然后在roi范围内找出直线
我已经实现了在整个图片中检测直线,但是不知道怎么设定感兴趣的区域,请哪位指点一下。希望有代码~
这是我的那部分代码,该怎么修改和添加呢?
lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 50, 0, 0 );
for( i = 0; i < MIN(lines->total,100); i++ )
{
float* line = (float*)cvGetSeqElem(lines,i);
float rho = line[0];
float theta = line[1];
CvPoint pt1, pt2;
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));
cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 2, CV_AA, 0 );
} 展开
我已经实现了在整个图片中检测直线,但是不知道怎么设定感兴趣的区域,请哪位指点一下。希望有代码~
这是我的那部分代码,该怎么修改和添加呢?
lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 50, 0, 0 );
for( i = 0; i < MIN(lines->total,100); i++ )
{
float* line = (float*)cvGetSeqElem(lines,i);
float rho = line[0];
float theta = line[1];
CvPoint pt1, pt2;
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));
cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 2, CV_AA, 0 );
} 展开
1个回答
2011-09-06
展开全部
create一个新的image* p_roi 宽高是你要设置的roi大小
cvSetImageROI(dst,rect);rect是你要设置的roi,坐标宽高
cvCopy(dst,p_roi);
//对p_roi做你的那些处理
cvReleaseImage(&p_roi);
cvResetImageROI(dst);
cvSetImageROI(dst,rect);rect是你要设置的roi,坐标宽高
cvCopy(dst,p_roi);
//对p_roi做你的那些处理
cvReleaseImage(&p_roi);
cvResetImageROI(dst);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询