为什么OpenCV会显示一个空窗口而不是图像?

时间:2014-03-26 21:55:29

标签: python opencv real-time video-processing

我在linux中使用Python和openCV。程序应该读取摄像机并能够更改最小和最大h,s和v颜色范围的轨迹栏以实时分割帧。分割后,它应该在另一个窗口中显示该图像。 我的问题是分段显示为空窗口。

这是我的代码的一部分:

while(True):

    if(not pause):
        ret, current_img = video.read()
        new_range(0)
        cv2.imshow("Video", current_img)

    key = cv2.waitKey(33)
    if key==ord(' '):
        pause = not pause
    elif key == 27:
        break

这是视频的循环,分段然后显示图像的功能是:

def new_range(x):
if(current_img != 0):

    h_min = cv2.getTrackbarPosition("Bars", "min_hue")
    h_max = cv2.getTrackbarPosition("Bars", "max_hue")

    s_min = cv2.getTrackbarPosition("Bars", "min_saturation")
    s_max = cv2.getTrackbarPosition("Bars", "max_saturartion")

    v_min = cv2.getTrackbarPosition("Bars", "min_saturation")
    v_max = cv2.getTrackbarPosition("Bars", "max_saturartion")

    min_hsv = np.array([h_min, s_min, v_min])
    max_hsv = np.array([h_max, s_max, v_max])
    hsv = cv2.cvtColor(current_img, cv2.COLOR_BGR2HSV)
    bw = cv2.inRange(current_img, min_hsv, max_hsv)
    cv2.imshow("Segmentation", bw)
    cv2.waitKey(0)

帮助?谢谢!

2 个答案:

答案 0 :(得分:0)

将图像转换回BGR格式

bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)

答案 1 :(得分:0)

我修复了!这很简单,因为current_img不是全局的,所以我在函数new_range(x)的开头编写了current_img。谢谢!