opencv3累计概率霍夫变换-HoughLinesP函数

来源:互联网 发布:数据接口开发 编辑:程序博客网 时间:2024/04/30 09:05
#include<iostream>#include<opencv2/opencv.hpp>#include<vector>using namespace std;using namespace cv;int g_CannyThred = 150, g_CannyP = 0, g_CannySize = 0, g_HoughThred = 100, g_HoughThick = 0;int g_Blue = 255, g_Green = 255, g_Red = 0;int g_nWay = 0;int g_nHoughLineMax = 10, g_nHoughLineMin = 50;int main(){Mat srcImage = imread("1.jpg");imshow("【原图】", srcImage);Mat grayImage;cvtColor(srcImage, grayImage, CV_BGR2GRAY);Mat cannyImage;vector<Vec4i> lines;Point point1, point2;namedWindow("【滚动条窗口】", 0);createTrackbar("CannyThred", "【滚动条窗口】", &g_CannyThred, 255, 0);createTrackbar("P:", "【滚动条窗口】", &g_CannyP, 100, 0);createTrackbar("Size", "【滚动条窗口】", &g_CannySize, 20, 0);createTrackbar("HThred", "【滚动条窗口】", &g_HoughThred, 255, 0);createTrackbar("Blue", "【滚动条窗口】", &g_Blue, 255, 0);createTrackbar("Green", "【滚动条窗口】", &g_Green, 255, 0);createTrackbar("Red", "【滚动条窗口】", &g_Red, 255, 0);createTrackbar("Bgr/Gray", "【滚动条窗口】", &g_nWay, 1, 0);createTrackbar("Thick", "【滚动条窗口】", &g_HoughThick, 100, 0);createTrackbar("MaxLine", "【滚动条窗口】", &g_nHoughLineMax, 200, 0);createTrackbar("MinLine", "【滚动条窗口】", &g_nHoughLineMin, 200, 0);char key;Mat CannyBgrImage;Mat dstImage;while (1){Canny(srcImage, cannyImage, (double)g_CannyThred, (double)((g_CannyThred + 1) * (2 + g_CannyP / 100.0)), 3);HoughLinesP(cannyImage, lines, 1, CV_PI / 180, g_HoughThred + 1, g_nHoughLineMin, g_nHoughLineMax);cvtColor(cannyImage, CannyBgrImage, CV_GRAY2BGR);//显示线段for (size_t i = 0; i < lines.size(); i++){point1 = Point(lines[i][0], lines[i][1]);point2 = Point(lines[i][2], lines[i][3]);if (g_nWay)dstImage = cannyImage;elsedstImage = CannyBgrImage;line(dstImage, point1, point2, Scalar(g_Blue, g_Green, g_Red), g_HoughThick + 1, CV_AA);}imshow("【处理后】", dstImage);key = waitKey(1);if (key == 27)break;}return 0;}

0 0
原创粉丝点击