2014-03-03 128 views
7

我跟着教程this page,但執行cv2.drawContours(im,contours,-1,(0,255,0),3)行時似乎沒有發生。正如教程中所示,我期待看到帶有綠色輪廓的star.jpg。這裏是我的代碼:Python opencv drawContours不顯示任何東西

import numpy as np 
import cv2 

im = cv2.imread('C:\Temp\ip\star.jpg') 
print im.shape #check if the image is loaded correctly 
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 
ret,thresh = cv2.threshold(imgray,127,255,0) 
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
cv2.drawContours(im,contours,-1,(0,255,0),3) 
pass 

沒有錯誤信息。 star.jpg是上述網頁中的明星。 我使用的是opencv版本2.4.8和Python 2.7。

drawContours應該在屏幕上顯示圖像嗎?如果是這樣,我做錯了什麼?如果不是,我該如何顯示圖像?

由於

編輯:

添加下列行將顯示圖像:

cv2.imshow("window title", im) 
cv2.waitKey() 

waitKey()需要否則窗口將只顯示一個灰色背景。根據this post,這是因爲waitKey()告訴它開始處理WM_PAINT事件。

+0

drawContours吸引輪廓到圖像。它不顯示在屏幕上。調用drawContours(。)後,您必須顯示圖像im'才能看到它。 – lightalchemist

回答

4

我也有同樣的問題。它顯示的是事物,但我們的眼睛看不到太黑。 解決方案: 改變從(0,255,0)的顏色(一些奇怪的原因,我也曾經有過給一模一樣的顏色!)至(128,255,0)(或更好一些亮色)

5

我有同樣的問題。我相信問題是底層圖像是1通道而不是3通道。因此,您需要設置顏色,使其在第一個元素中不爲零(例如(255,0,0))。

5

你必須做一些事來的效果:(。)

cv2.drawContours(im,contours,-1,(255,255,0),3) 
cv2.imshow("Keypoints", im) 
cv2.waitKey(0)