欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

Opencv Hough算法實現(xiàn)圖片中直線檢測

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

本文實例為大家分享了Opencv Hough算法實現(xiàn)直線檢測的具體代碼,供大家參考,具體內(nèi)容如下

(1)載入需檢測的圖及顯示原圖

Mat g_srcImage = imread("C:\\Users\\lenovo\\Pictures\\Saved Pictures\\Q.jpg"); //圖片所放路徑  
imshow("【原始圖】", g_srcImage);

(2)為顯示不同的效果圖而設(shè)置滑動條

namedWindow("【效果圖】", 1);
createTrackbar("值", "【效果圖】", &g_nthreshold, 200, on_HoughLines);

(3)圖像處理及顯示

//進行邊緣檢測和轉(zhuǎn)化為灰度圖 
 Canny(g_srcImage, g_midImage, 50, 200, 3);//進行一次canny邊緣檢測 
 cvtColor(g_midImage, g_dstImage, CV_GRAY2BGR);//轉(zhuǎn)化邊緣檢測后的圖為灰度圖 
 //調(diào)用一次回調(diào)函數(shù),調(diào)用一次HoughLinesP函數(shù) 
 on_HoughLines(g_nthreshold, 0);
 HoughLinesP(g_midImage, g_lines, 1, CV_PI / 180, 80, 50, 10);
 //顯示效果圖  
 imshow("【效果圖】", g_dstImage);
 waitKey(0);
 return 0;

(4)主要函數(shù):on_HoughLines()

//定義局部變量儲存全局變量 
 Mat dstImage = g_dstImage.clone();
 Mat midImage = g_midImage.clone();
 //調(diào)用HoughLinesP函數(shù) 
 vector<Vec4i> mylines;
 HoughLinesP(midImage, mylines, 1, CV_PI / 180, g_nthreshold + 1, 50, 10);
 //循環(huán)遍歷繪制每一條線段 
 for (size_t i = 0; i < mylines.size(); i++)
 {
 Vec4i l = mylines[i];
 line(dstImage, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(23, 180, 55), 1, CV_AA);
 }
 //顯示圖像 
 imshow("【效果圖】", dstImage);

(5)源代碼:

#include <opencv2/opencv.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
 
using namespace std;
using namespace cv;
 
 
Mat g_srcImage, g_dstImage, g_midImage;//原始圖、中間圖和效果圖 
vector<Vec4i> g_lines;//定義一個矢量結(jié)構(gòu)g_lines用于存放得到的線段矢量集合 
//變量接收的TrackBar位置參數(shù) 
int g_nthreshold = 100;
 
static void on_HoughLines(int, void*);//回調(diào)函數(shù) 
static void ShowHelpText();
 
int main()
{
 //改變console字體顏色 
 system("color 3F");
 ShowHelpText();
 //載入原始圖和Mat變量定義   
 Mat g_srcImage = imread("C:\\Users\\lenovo\\Pictures\\Saved Pictures\\Q.jpg"); 
 //顯示原始圖  
 imshow("【原始圖】", g_srcImage);
 //創(chuàng)建滾動條 
 namedWindow("【效果圖】", 1);
 createTrackbar("值", "【效果圖】", &g_nthreshold, 200, on_HoughLines);
 //進行邊緣檢測和轉(zhuǎn)化為灰度圖 
 Canny(g_srcImage, g_midImage, 50, 200, 3);//進行一次canny邊緣檢測 
 cvtColor(g_midImage, g_dstImage, CV_GRAY2BGR);//轉(zhuǎn)化邊緣檢測后的圖為灰度圖 
 //調(diào)用一次回調(diào)函數(shù),調(diào)用一次HoughLinesP函數(shù) 
 on_HoughLines(g_nthreshold, 0);
 HoughLinesP(g_midImage, g_lines, 1, CV_PI / 180, 80, 50, 10);
 //顯示效果圖  
 imshow("【效果圖】", g_dstImage);
 waitKey(0);
 return 0;
}
static void on_HoughLines(int, void*)
{
 //定義局部變量儲存全局變量 
 Mat dstImage = g_dstImage.clone();
 Mat midImage = g_midImage.clone();
 //調(diào)用HoughLinesP函數(shù) 
 vector<Vec4i> mylines;
 HoughLinesP(midImage, mylines, 1, CV_PI / 180, g_nthreshold + 1, 50, 10);
 //循環(huán)遍歷繪制每一條線段 
 for (size_t i = 0; i < mylines.size(); i++)
 {
 Vec4i l = mylines[i];
 line(dstImage, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(23, 180, 55), 1, CV_AA);
 }
 //顯示圖像 
 imshow("【效果圖】", dstImage);
}
static void ShowHelpText()
{
 //輸出一些幫助信息 
 printf("\n\n\n\t通過調(diào)整滾動條觀察圖像的不同效果~\n\n");
 printf("\n\n\t\t\t by淺墨");
}

(6)原圖:

效果圖(調(diào)節(jié)滑條顯示不同結(jié)果圖):

值為100時:

值為23時:

 

值為60時:

值為126時:

 

值為184時:

 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:C++ 單例模式的幾種實現(xiàn)方式研究

欄    目:C語言

下一篇:opencv檢測直線方法之投影法

本文標(biāo)題:Opencv Hough算法實現(xiàn)圖片中直線檢測

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/555.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有