#include<QCoreApplication>#include"opencv2/opencv.hpp"usingnamespace cv;usingnamespace std;//直线检测intmain(){
src=imread("../image/8.jpg");if(src.empty()){printf("could not load image ...");return;}imshow("src",src);cvtColor(src,src,CV_BGR2GRAY);//裁剪图像// Rect rect=Rect(10,10,src.cols-20,src.rows-20);// src=src(rect);//binary image
Mat binary,morhpImg;//THRESH_BINARY_INV 返色//二值化threshold(src,binary,0,255,THRESH_BINARY_INV|THRESH_OTSU);//morhpology形态学开操作
Mat kernel=getStructuringElement(MORPH_RECT,Size(20,1),Point(-1,-1));morphologyEx(binary,morhpImg,MORPH_OPEN,kernel,Point(-1,-1));imshow("output",morhpImg);//膨胀操作
kernel=getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));dilate(morhpImg,morhpImg,kernel);imshow("output",morhpImg);
vector<Vec4i> lines;HoughLinesP(morhpImg,lines,1,CV_PI/180.0,30,20.0,0);
Mat result=src.clone();cvtColor(result,result,CV_GRAY2BGR);for(int i=0;i<lines.size();i++){
Vec4i lin=lines[i];line(result,Point(lin[0],lin[1]),Point(lin[2],lin[3]),Scalar(0,0,255),2,8,0);}imshow("output",result);return0;}