Python opencv drawContours没有显示任何内容

时间:2014-03-03 02:09:13

标签: python opencv

我按照this page上的教程进行操作,但执行第cv2.drawContours(im,contours,-1,(0,255,0),3)行似乎没有任何结果。我希望看到带有绿色轮廓的star.jpg,如教程中所示。这是我的代码:

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(),否则窗口将显示灰色背景。根据{{​​3}},这是因为waitKey()告诉它开始处理WM_PAINT事件。

4 个答案:

答案 0 :(得分:11)

我有同样的问题。我认为问题在于底层图像是1通道而不是3通道。因此,您需要设置颜色,使其在第一个元素中非零(例如(255,0,0))。

答案 1 :(得分:7)

我也有同样的问题。它显示的是,但我们的眼睛看得太黑了。 解: 改变颜色从(0,255,0)(出于一些奇怪的原因,我也给出完全相同的颜色!)到(128,255,0)(或更好的颜色)

答案 2 :(得分:7)

你必须做一些事情:

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

答案 3 :(得分:0)

我想您的原始图像在灰度平面内。由于您的位平面是灰色而不是BGR,因此轮廓不会显示。因为它是黑色和灰色,您无法区分。这是简单的解决方案[通过转换位平面]:

im=cv2.cvtColor(im,cv2.COLOR_GRAY2BGR)
cv2.drawContours(im,contours,-1,(0,255,0),3)
相关问题