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

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

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

參數(shù)說明:
第一個參數(shù)表示輸入圖像,必須為二值圖像(黑白圖)。
第二個參數(shù)表示存儲容器,可以傳入CvMemStorage類型的指針。
第三個參數(shù)表示變換變量,可以取下面的值:
  CV_HOUGH_STANDARD - 傳統(tǒng)或標準 Hough 變換. 每一個線段由兩個浮點數(shù) (ρ, θ) 表示,其中 ρ 是線段與原點 (0,0) 之間的距離,θ 線段與 x-軸之間的夾角。
  CV_HOUGH_PROBABILISTIC - 概率 Hough 變換(如果圖像包含一些長的線性分割,則效率更高)。它返回線段分割而不是整個線段。每個分割用起點和終點來表示。
  CV_HOUGH_MULTI_SCALE - 傳統(tǒng) Hough 變換的多尺度變種。線段的編碼方式與 CV_HOUGH_STANDARD 的一致。
第四個參數(shù)表示與象素相關(guān)單位的距離精度。
第五個參數(shù)表示弧度測量的角度精度。
第六個參數(shù)表示檢測線段的最大條數(shù),如果已經(jīng)檢測這么多條線段,函數(shù)返回。
第七個參數(shù)與第三個參數(shù)有關(guān),其意義如下:
  對傳統(tǒng) Hough 變換,不使用(0).
  對概率 Hough 變換,它是最小線段長度.
  對多尺度 Hough 變換,它是距離精度 rho 的分母 (大致的距離精度是 rho 而精確的應(yīng)該是 rho / param1 ).
第八個參數(shù)與第三個參數(shù)有關(guān),其意義如下:
  對傳統(tǒng) Hough 變換,不使用 (0).
  對概率 Hough 變換,這個參數(shù)表示在同一條線段上進行碎線段連接的最大間隔值(gap), 即當同一條線段上的兩條碎線段之間的間隔小于param2時,將其合二為一。
  對多尺度 Hough 變換,它是角度精度 theta 的分母 (大致的角度精度是 theta 而精確的角度應(yīng)該是 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)  
# 可執(zhí)行文件  
TARGET = hough  
$(TARGET)(OBJECTS)  
        g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)  
$(OBJECTS)(SOURCES)  
        g++ -c $(SOURCES)  
clean:  
        rm $(OBJECTS) $(TARGET)  
# 編譯規(guī)則 $@代表目標文件 $< 代表第一個依賴文件  
%.o:%.cpp  
        g++ -I $(INCLUDE) -o $@ -c $<

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

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


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

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

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節(jié)省時間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 韩国免费毛片在线看 | a毛片在线免费观看 | 人间正道是沧桑全集免费下载高清 | 欧美人与动物交 | 日韩黄色网页 | 国产特黄特色的大片观看免费视频 | 久久精彩免费视频 | 好吊日视频在线 | 国产3区 | 国产h在线 | 精品久久久久久久 | 高清欧美一级在线观看 | 日本免费一区视频 | 我不卡影院在线观看 | 亚洲综合亚洲综合网成人 | 一区二区三区四区欧美 | 国产精品国产三级国产专区5o | 久久精品中文字幕有码日本 | 亚洲情区 | 国产精品玖玖玖在线观看 | 九九久久99综合一区二区 | 国产亚洲视频在线观看 | 欧美日韩中文一区二区三区 | 一级毛片 在线播放 | 花季v3.351| 久草观看 | 日韩3页| 久久国产区 | 亚洲网址在线观看 | 日韩成人中文字幕 | 免费手机黄色网址 | 国产成人综合亚洲欧美天堂 | 成人欧美一区在线视频在线观看 | 亚洲一区二区天海翼 | 香蕉视频成人在线观看 | 99热这里都是精品 | 欧美日韩一区二区三区久久 | 久久精品国产一区二区三区 | 日本在线视频免费看 | 榴莲丝瓜黄瓜草莓向日葵污苹果 | 日本九九精品一区二区 |