OpenCV学习笔记(11):hough变换和概率hough变换
来源:互联网 发布:网络歪歌公社最新歌曲 编辑:程序博客网 时间:2024/05/22 10:45
#include "stdafx.h"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>using namespace cv;using namespace std;/// Global variables/** General variables */Mat src, edges;Mat src_gray;Mat standard_hough, probabilistic_hough;int min_threshold = 50;int max_trackbar = 150;const char* standard_name = "Standard Hough Lines Demo";const char* probabilistic_name = "Probabilistic Hough Lines Demo";int s_trackbar = max_trackbar;int p_trackbar = max_trackbar;/// Function Headersvoid help();void Standard_Hough(int, void*);void Probabilistic_Hough(int, void*);int main(int, char** argv){/// Read the imagesrc = imread("lena.png", 1);if (src.empty()){help();return -1;}/// Pass the image to graycvtColor(src, src_gray, COLOR_RGB2GRAY);/// Apply Canny edge detectorCanny(src_gray, edges, 50, 200, 3);/// Create Trackbars for Thresholdschar thresh_label[50];sprintf_s(thresh_label, "Thres: %d + input", min_threshold);namedWindow(standard_name, WINDOW_AUTOSIZE);createTrackbar(thresh_label, standard_name, &s_trackbar, max_trackbar, Standard_Hough);namedWindow(probabilistic_name, WINDOW_AUTOSIZE);createTrackbar(thresh_label, probabilistic_name, &p_trackbar, max_trackbar, Probabilistic_Hough);/// InitializeStandard_Hough(0, 0);Probabilistic_Hough(0, 0);waitKey(0);return 0;}void help(){printf("\t Hough Transform to detect lines \n ");printf("\t---------------------------------\n ");printf(" Usage: ./HoughLines_Demo <image_name> \n");}/*** @function Standard_Hough*/void Standard_Hough(int, void*){vector<Vec2f> s_lines;cvtColor(edges, standard_hough, CV_GRAY2BGR);/// 1. Use Standard Hough TransformHoughLines(edges, s_lines, 1, CV_PI / 180, min_threshold + s_trackbar, 0, 0);/// Show the resultfor (size_t i = 0; i < s_lines.size(); i++){float r = s_lines[i][0], t = s_lines[i][1];double cos_t = cos(t), sin_t = sin(t);double x0 = r*cos_t, y0 = r*sin_t;double alpha = 1000;Point pt1(cvRound(x0 + alpha*(-sin_t)), cvRound(y0 + alpha*cos_t));Point pt2(cvRound(x0 - alpha*(-sin_t)), cvRound(y0 - alpha*cos_t));line(standard_hough, pt1, pt2, Scalar(255, 0, 0), 3, CV_AA);}imshow(standard_name, standard_hough);}/*** @function Probabilistic_Hough*/void Probabilistic_Hough(int, void*){vector<Vec4i> p_lines;cvtColor(edges, probabilistic_hough, CV_GRAY2BGR);/// 2. Use Probabilistic Hough TransformHoughLinesP(edges, p_lines, 1, CV_PI / 180, min_threshold + p_trackbar, 30, 10);/// Show the resultfor (size_t i = 0; i < p_lines.size(); i++){Vec4i l = p_lines[i];line(probabilistic_hough, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(255, 0, 0), 3, CV_AA);}imshow(probabilistic_name, probabilistic_hough);}
0 0
- OpenCV学习笔记(11):hough变换和概率hough变换
- opencv笔记(5):Hough变换
- OpenCV学习笔记9 (Hough线变换)
- 学习opencv之Hough变换
- 学习笔记之HOUGH变换
- opencv-Hough变换
- Opencv--Hough变换
- 【opencv】hough圆变换
- OpenCV自学笔记5:Hough变换检测直线和圆
- OpenCV自学笔记27. Hough变换:检测直线和圆
- OpenCV 学习(Hough 变换提取直线)
- OpenCV学习之Hough变换检测直线
- OpenCV学习之Hough变换检测圆
- Hough变换原理学习
- Hough变换学习
- opencv----霍夫(Hough)变换:霍夫线变换,霍夫圆变换
- Hough变换(转载)
- 霍夫(Hough)变换
- 【学习笔记】JavaScript编码规范-数组
- CentOS 7.0默认使用的是firewall作为防火墙
- http://www.51testing.com/html/82/n-819282-3.html
- 简单的Spinner运用
- Mark GetProcAddress Using In Win & Unix
- OpenCV学习笔记(11):hough变换和概率hough变换
- android JNI cocos2dx调用对话框
- POJ 3678 Katu Puzzle (2-sat基础)
- java文件读写操作大全
- 排序算法
- iterm2 快捷键
- win7下编译jrtplib,及配置其中的example
- 第六章面向对象(下)2015-05-13
- 进程与线程的区别联系