我正在尝试使用opencv获取两行的宽度或厚度!我正在使用threshold
函数来获得更高的线条表示,如:
我的问题是如何获取像素的线条粗细,我尝试使用HoughLinesP
函数,但我不确定结果是否正确:
这是我尝试的代码:
.........................................
vector<Mat> laserChannels;
vector<Vec4i> lines;
Mat laserCross;
Mat otsu;
while (key!= 27){
cap >> laserCross;
split(laserCross, laserChannels);
threshold(laserChannels[2], otsu, 50, 255, THRESH_BINARY);
HoughLinesP( otsu, lines, 1, CV_PI/2, 1, 400,100 );
for( size_t i = 0; i < lines.size(); i++ )
{
line( laserCross, Point(lines[i][0], lines[i][1]),
Point(lines[i][2], lines[i][3]), Scalar(0,0,255), 1, 8 );
}
std::cout << lines.size()<< std::endl;
................................................
线条尺寸为24 25这是否意味着线条厚度为12像素? 在此先感谢您的帮助!
答案 0 :(得分:0)
我建议你首先使用形态滤镜。你的第一张照片需要一些平滑。
之后,您可以使用Image-erode(Image)
获得行边界。
接下来你可以做的是,使Hough Lines适合边界图像并获得最强大的n行。
Voilà,你获得最强大的线条,分析参数。 (Rho&amp; Theta)