为什么OpenCV显示空窗口而不是图像?
我在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
我解决了这个问题!其实很简单,current_img 这个变量不是全局的,所以我在函数 new_range(x) 的开头加上了 global current_img。谢谢大家!
1
把图片转换回BGR格式
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)