国产毛片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://www.qingdxww.cn/thread-149732-1-1.html     【打印本頁】

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

廠商推薦

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

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青草视频在线观看免费网站 | 国产成人三级视频在线观看播放 | 亚洲视频毛片 | 国产精品一区在线播放 | 黑人超长巨大xxxxxxx视频 | 精品在线看 | 日日碰狠狠添天天爽五月婷 | 日韩99在线 | 欧美xxxbbb | 欧美不卡视频在线 | 99久久精品免费精品国产 | 国产精品亚洲综合 | 亚洲精品第一综合99久久 | 日韩免费精品 | 丁香色综合 | 麻豆传煤天美传媒 | 自拍 欧美 在线 综合 另类 | 欧美视频大全 | 国产成人亚洲精品2020 | 亚洲视频免费在线看 | 日本aaa大片| 国产精品久久自在自2021 | 999国产视频 | 欧美在线视频第一页 | 欧美性另类高清极品 | 天堂综合网 | 国产醉酒 | 色网站在线 | 久久777国产线看观看精品卜 | 亚洲国产一区二区三区在线观看 | 妈妈的朋友hd在线观看 | 亚洲欧美日韩中文综合v日本 | 尤物久久99热国产综合 | 日本不卡中文字幕一区二区 | 欧美不卡视频在线观看 | www.色网站| 日韩在线 中文字幕 | 果冻传媒第一二专区天美传媒 | 四虎永久免费网站免费观看 | 欧美日韩国产高清 | 欧美日韩在线精品一区二区三区 |