使用 if cv2.waitKey(1) & ord ==('q'): break 语句 按了q之后画面就卡住不动 而且关不掉
时间: 2023-12-14 07:38:47 浏览: 217
这个问题可能是由于 `cv2.waitKey(1)` 的参数值太小导致的,你可以尝试将其改为更大的值,例如 `cv2.waitKey(100)`。此外,你也可以尝试使用 `cv2.destroyAllWindows()` 函数手动关闭窗口。完整的代码如下:
```
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(100) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
注意:`ord('q')` 返回 'q' 的 ASCII 码值,而不是字符串 'q'。因此在判断按键是否为 'q' 时,需要使用 `0xFF == ord('q')` 进行比较。
相关问题
# ********************vision*********************** # ************demo:save image from rostopic************ # imgproc = HG_CV_Imagproc() # while not rospy.is_shutdown(): # topic_img = imgproc.getTopicImage() # if cv2.waitKev(0) == ord(s'): # cv2.imwrite('save.png',topic_img) # elif cv2.waitKey(0) == 27: # break
这段代码是一个使用ROS和OpenCV保存图像的示例。
首先,通过实例化`HG_CV_Imagproc`类的对象,赋值给变量`imgproc`。
然后,进入一个循环,直到ROS被关闭。
在循环内部,通过调用`imgproc.getTopicImage()`方法,获取ROS话题中的图像数据,并将结果赋值给变量`topic_img`。
接下来,通过调用`cv2.waitKey(0)`函数,等待键盘输入。
如果按下键盘上的"s"键(对应ASCII码为115),则通过调用`cv2.imwrite('save.png',topic_img)`函数,将`topic_img`保存为名为"save.png"的图像文件。
如果按下键盘上的"Esc"键(对应ASCII码为27),则通过`break`语句跳出循环,结束程序运行。
需要注意的是,具体的功能和返回值的含义取决于`HG_CV_Imagproc`类和ROS的具体实现。此示例代码仅展示了如何使用OpenCV和ROS保存图像,并没有完整的ROS节点和图像处理的实现。
python3里面if cv2.waitKey(1) & 0xFF == ord('q'):,改为按'ESC'
在Python3中,`cv2.waitKey(1)`是OpenCV库中的一个函数,用于等待键盘输入。它会暂停程序的运行,并等待用户按下一个键,等待时间为1毫秒。如果在等待时间内没有任何键被按下,则返回-1。如果有键被按下,则返回键的ASCII码值。
在if语句中,它可以用来检测用户是否按下了某个键,例如:
```
if cv2.waitKey(1) == ord('q'):
break
```
这个代码片段会在等待用户按下键盘上的“q”键时跳出循环。
阅读全文