2012-06-05 93 views
0

我在網上找了一些Python的圖像邊緣檢測代碼,發現了一些我想看的有趣的東西。不幸的是我不斷收到此錯誤:「cv2.cv.cvseq」對象有沒有屬性「總」Python OpenCv給出的錯誤'cv2.cv.cvseq'對象沒有'total'屬性

的代碼有過錯的線是

lines = HoughLines2(dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 100, 0, 0); 

整個代碼必須之間切換的選項Hough Standard和Hough Probabilistic,當我將它設置爲使用概率方法(因此不需要「lines.total」代碼段)時,它運行良好,所以我非常確定我擁有我需要安裝和導入的所有內容。

回答

2

我不知道你爲什麼使用舊的'cv'版本,而新的'cv2'版本非常簡單,所有對象都以python list或numpy數組的形式返回,這很容易從用戶的角度來處理。

HoughLines函數的輸出是形狀(1,行數,2)和(1,行數,4)的numpy陣列。你可以做任何你想做的事,因爲你掌握了所有的numpy功能。

下面是檢測線的樣品,因爲你提及的是相同的,即霍夫標準和Hough概率之間切換:houghlines.py

下面是我得到使用的代碼的結果:

霍夫標準:

enter image description here

霍夫概率:

enter image description here

當然,檢測到的行取決於您嘗試的參數值。因此,請根據需要更改參數值並嘗試。

+0

我得到一個** TypeError:'NoneType'對象不是可以下標的「**對於行: '對於rho,theta在行[0]:* *和**'對於x1,y1,x2,y2行[0]:' 當我嘗試並運行您發佈的腳本時。 – DamianJ

+0

然後我認爲你的圖像中沒有檢測到線條。首先改變'cv2.imread(image)'。稍後將閾值參數更改爲較低的值。在錯誤行之前添加'print lines'。檢查它是否打印'NoneType'或打印值。還要在'cv2.Canny()'行中更改參數。仍然有錯誤,請上傳您的圖片。 –

+0

你是對的門檻值;我不得不大幅降低它們。謝謝。 – DamianJ

0

他們已經停用cvseq cvseq。有一個在OpenCV的2.3.1

沒有模塊cv2.cv.cvseq您應該使用

lines = cv2.HoughLines(dst, 1, CV_PI/180, 100, 0) 

http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=houghlines#cv2.HoughLines

CV2庫更加人性化,快捷,有效。你應該轉向OpenCV 2.3.1或2.4.0。如果您在安裝OpenCV 2.3.1時出現任何問題 - http://jayrambhia.wordpress.com/2012/05/02/install-opencv-2-3-1-and-simplecv-in-ubuntu-12-04-precise-pangolin-arch-linux/

相關問題