原型
void HoughLines(
InputArray image,
OutputArray lines,
double rho,
double theta,
int threshold,
double srn=0,
double stn=0
);
参数
vector lines;
例子
#include
#include
using namespace std;
using namespace cv;
int main()
{
Mat srcImage=imread("M.jpg");
Mat cannyImage,dstImage;
Canny(srcImage,cannyImage,50,200,3);
cvtColor(cannyImage,dstImage,COLOR_GRAY2BGR);
vector<Vec2f> lines;
HoughLines(cannyImage,lines,1,CV_PI/180,150,0,0);
for(size_t i=0;i<lines.size();i++)
{
double rho=lines[i][0],theta=lines[i][1];
Point 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(x0-1000*(a));
line(dstImage,pt1,pt2,Scalar::all(255),1);
}
namedWindow("dstImage",WINDOW_NORMAL);
imshow("dstImage",dstImage);
waitKey();
return 0;
}
原型
void warpAffine(
InputArray src,
OutputArray dst,
InputArray M,
Size dsize,
int flags=INTER_LINEAR,
int borderMode=BORDER_CONSTANT,
const Scalar &borderValue=Scalar()
);
参数
例子
#include
#include
using namespace std;
using namespace cv;
int main()
{
Mat srcImage=imread("M.jpg");
Mat cannyImage,dstImage;
Canny(srcImage,cannyImage,50,200,3);
cvtColor(cannyImage,dstImage,COLOR_GRAY2BGR);
vector<Vec2f> lines;
HoughLines(cannyImage,lines,1,CV_PI/180,150,0,0);
for(size_t i=0;i<lines.size();i++)
{
double rho=lines[i][0],theta=lines[i][1];
Point 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(x0-1000*(a));
line(dstImage,pt1,pt2,Scalar::all(255),1);
}
namedWindow("dstImage",WINDOW_NORMAL);
imshow("dstImage",dstImage);
waitKey();
return 0;
}