2013-02-26 189 views
1

我正在從cv轉換爲cv2,我很難找到等效的cv.CvtColor函數。使用cv2進行色彩空間轉換

我在文檔中看到cv2.cvtColor存在,但我不知道如何使用第三個參數。

cv2.CV_BGR2Lab不存在。同樣沒有cv2.CV2_BGR2Lab,當我使用cv.CV_BGR2Lab我得到的是一個錯誤:

cv2.cvtColor(img, img, cv.CV_BGR2Lab)

TypeError: only length-1 arrays can be converted to Python scalars

一段簡單的代碼產生的問題:

img = cv2.imread(path) 
cv2.cvtColor(img, img, cv.CV_BGR2Lab) 

回答

6

我認爲你按錯誤順序排列參數。 cv2 docs按以下順序顯示:cv2.cvtColor(src, code[, dst[, dstCn]]),與cv不同,它的順序是:cv.CvtColor(src, dst, code)

因此,基於的是,與其他answer關於顏色轉換系數名稱更改的信息一起,你需要使用:

cv2.cvtColor(img, cv2.COLOR_BGR2LAB, img) 
+0

我沒有看到即將到來。我想在閱讀文檔時應該更加小心。無論如何,目前我使用'cv.CV_BGR2Lab'。你知道它是否有任何cv2版本?我嘗試過'cv2.CV_BGR2Lab'和'cv2.CV2_BGR2Lab',但沒有運氣。 – Leo 2013-02-27 11:00:53

+0

''cv2.cvtColor()'的[documentation](http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor)似乎表明它會進行這種類型的轉換。請參閱以'RGB <--> CIE L * a * b *'開頭的部分,其中列出了'CV_BGR2Lab'。 – martineau 2013-02-27 12:33:21

+0

我的解釋不是很清楚。讓我重新開始。目前我使用'cv2.cvtColor(im,cv.CV_BGR2Lab,im)',它做我想要的。但是,在'cv2','cvtColor'中使用函數時,我發現使用'cv'的引用有點混亂,即'CV_BGR2Lab'。所以我的問題是:是否有cv2版本的'cv.CV_BGR2Lab'?我找不到任何。 – Leo 2013-02-27 13:22:32

5

你找這個常數

cv.CV_BGR2Lab --> cv2.COLOR_BGR2LAB 

並且所有用於顏色轉換的其他常數遵循相似的模式

cv.CV_<CONSTANT> --> cv2.COLOR_<CONSTANT> 

我還沒有找到一個好的來源(甚至是文檔)來確定常量的翻譯方式。

更新: 見討論herehere更多有關的常數。

+0

不清楚CV_HAAR_DO_CANNY_PRUNING去了哪裏...... :( – 2015-08-13 07:17:06

相關問題