我在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)
帮助?谢谢!
答案 0 :(得分:0)
将图像转换回BGR格式
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
答案 1 :(得分:0)
我修复了!这很简单,因为current_img不是全局的,所以我在函数new_range(x)的开头编写了current_img。谢谢!