国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

【Rayeager PX2分享】OpenCV入門之線段檢測

發布時間:2015-5-26 11:39    發布者:穿prada的008
關鍵詞: opencv
線段檢測主要運用Hough變換,Hough變換是圖像處理中從圖像中識別幾何形狀的基本方法之一,應用很廣泛,也有很多改進算法。主要用來從圖像中分離出具有某種相同特征的幾何形狀(如,直線,圓等)。最基本的霍夫變換是從黑白圖像中檢測直線(線段)。
在OpenCV編程中,實現線段檢測主要使用cvHoughLines2函數。
函數原型:
CvSeq* cvHoughLines2(
  CvArr* image,
  void* line_storage,
  int method,
  double rho,
  double theta,
  int threshold,
  double param1=0, double param2=0
);

參數說明:
第一個參數表示輸入圖像,必須為二值圖像(黑白圖)。
第二個參數表示存儲容器,可以傳入CvMemStorage類型的指針。
第三個參數表示變換變量,可以取下面的值:
  CV_HOUGH_STANDARD - 傳統或標準 Hough 變換. 每一個線段由兩個浮點數 (ρ, θ) 表示,其中 ρ 是線段與原點 (0,0) 之間的距離,θ 線段與 x-軸之間的夾角。
  CV_HOUGH_PROBABILISTIC - 概率 Hough 變換(如果圖像包含一些長的線性分割,則效率更高)。它返回線段分割而不是整個線段。每個分割用起點和終點來表示。
  CV_HOUGH_MULTI_SCALE - 傳統 Hough 變換的多尺度變種。線段的編碼方式與 CV_HOUGH_STANDARD 的一致。
第四個參數表示與象素相關單位的距離精度。
第五個參數表示弧度測量的角度精度。
第六個參數表示檢測線段的最大條數,如果已經檢測這么多條線段,函數返回。
第七個參數與第三個參數有關,其意義如下:
  對傳統 Hough 變換,不使用(0).
  對概率 Hough 變換,它是最小線段長度.
  對多尺度 Hough 變換,它是距離精度 rho 的分母 (大致的距離精度是 rho 而精確的應該是 rho / param1 ).
第八個參數與第三個參數有關,其意義如下:
  對傳統 Hough 變換,不使用 (0).
  對概率 Hough 變換,這個參數表示在同一條線段上進行碎線段連接的最大間隔值(gap), 即當同一條線段上的兩條碎線段之間的間隔小于param2時,將其合二為一。
  對多尺度 Hough 變換,它是角度精度 theta 的分母 (大致的角度精度是 theta 而精確的角度應該是 theta / param2)。

示例程序:
hough.cpp

#include
#include
#include
#include
#include

using namespace std;

int main (int argc, char **argv)  
{     
        const char *pstrWindowsSrcTitle = "initial";
        const char *pstrWindowsLineName = "hough";

        IplImage *pSrcImage = cvLoadImage("hough.jpg", CV_LOAD_IMAGE_UNCHANGED);
       
        IplImage *pGrayImage =  cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);  
        cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);

        IplImage *pCannyImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);  
        cvCanny(pGrayImage, pCannyImage, 30, 90);

        CvMemStorage *pcvMStorage = cvCreateMemStorage();  
        double fRho = 1;  
        double fTheta = CV_PI / 180;  
        int nMaxLineNumber = 50;        //最多檢測條直線
        double fMinLineLen = 50;        //最小線段長度
        double fMinLineGap = 10;        //最小線段間隔
        CvSeq *pcvSeqLines = cvHoughLines2(pCannyImage, pcvMStorage, CV_HOUGH_PROBABILISTIC, fRho, fTheta, nMaxLineNumber, fMinLineLen, fMinLineGap);

        IplImage *pColorImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 3);
        cvCvtColor(pCannyImage, pColorImage, CV_GRAY2BGR);
        int i;
        for(i = 0; i < pcvSeqLines->total; i++)  
        {  
                CvPoint* line = (CvPoint*)cvGetSeqElem(pcvSeqLines, i);  
                cvLine(pColorImage, line[0], line[1], CV_RGB(255,0,0), 2);
          }
       
        cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);  
        cvShowImage(pstrWindowsSrcTitle, pSrcImage);  
        cvNamedWindow(pstrWindowsLineName, CV_WINDOW_AUTOSIZE);  
        cvShowImage(pstrWindowsLineName, pColorImage);  

        cvWaitKey(0);  

        cvReleaseMemStorage(&pcvMStorage);  
        cvDestroyWindow(pstrWindowsSrcTitle);  
        cvDestroyWindow(pstrWindowsLineName);  
        cvReleaseImage(&pSrcImage);  
        cvReleaseImage(&pGrayImage);  
        cvReleaseImage(&pCannyImage);  
        cvReleaseImage(&pColorImage);  
        return 0;  
}

makefile:

INCLUDE = $(shell pkg-config --cflags opencv)  
LIBS = $(shell pkg-config --libs opencv)  
SOURCES = hough.cpp  
# 目標文件  
OBJECTS = $(SOURCES:.cpp=.o)  
# 可執行文件  
TARGET = hough  
$(TARGET)(OBJECTS)  
        g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)  
$(OBJECTS)(SOURCES)  
        g++ -c $(SOURCES)  
clean:  
        rm $(OBJECTS) $(TARGET)  
# 編譯規則 $@代表目標文件 $< 代表第一個依賴文件  
%.o:%.cpp  
        g++ -I $(INCLUDE) -o $@ -c $<

所在文件夾上已有hough.jpg圖片,make后執行./hough hough.jpg
【Rayeager PX2分享】OpenCV入門之線段檢測

感謝fjjjnk1234的分享
更多請參考:http://chipspark.com/


本文地址:http://m.qingdxww.cn/thread-149732-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Chiptorials——如何使用ATECC608 TrustFLEX實現公鑰輪換
  • Chiptorials ——如何將CryptoAuthLib庫用于Microchip安全身份驗證IC
  • Chiptorials ——使用ATECC608 TrustFLEX實現基本非對稱身份驗證
  • FPGA設計流程培訓教程
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠色丁香婷婷综合久久片 | 国产特黄特色a级在线视频 国产特黄特色a级在线视 | 成人免费观看一区二区 | 久久精品成人国产午夜 | 国产精品区一区二区三 | 久热re国产手机在线观看 | 成人精品视频在线观看 | 激情综合欧美 | 嫩草成人影院 | 午夜成人在线视频 | 爱草视频 | 在线观看视频亚洲 | 美女被爆羞羞视 | 综合欧美日韩一区二区三区 | 亚洲欧美日韩综合二区三区 | 热99re久久精品这里都是免费 | 免费的黄色的视频 | 国产91欧美 | 思思91精品国产综合在线 | 国产精品不卡在线 | 国产精品第一 | 九九视频在线看精品 | 色综合久久久高清综合久久久 | 亚洲一区二区三区不卡在线播放 | 色九月 | 三级网址在线播放 | h免费观看 | 久草综合视频在线 | 日不卡 | h漫免费看| 日韩欧美中文字幕一区二区三区 | 91中文网 | 欧美成人动漫在线观看 | 九九热这里有精品 | 香蕉视频网页 | 免费看片污 | 精品一区二区久久久久久久网精 | 香蕉视频亚洲一级 | 中文字幕日韩精品有码视频 | 天天操网 | 国产精品久久久久久一级毛片 |