创建一副白色图像,大小为宽400,高300, (1)当鼠标左键点击图像时,在图像上显示出当前鼠标左键点击的次数;即每点击一次,数字加1。 (2)当按Esc键时,退出程序 用opencv写出python代码
时间: 2024-12-24 22:22:00 浏览: 4
LabVIEW操作鼠标滚轮放大或缩小图像
5星 · 资源好评率100%
你可以使用OpenCV的Python库结合PyQt5或类似GUI库来创建这样的交互式窗口。以下是一个简单的示例代码:
```python
import cv2
import numpy as np
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtGui import QPainter, QPen, QImage, QPixmap
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.image = None
self.click_count = 0
self.init_ui()
def init_ui(self):
self.setWindowTitle('Click Counter')
self.resize(400, 300)
# 创建QLabel显示图片
label = QLabel()
label.setPixmap(QPixmap.fromImage(cv2.cvtColor(self.create_image(), QImage.Format_RGB888)))
label.mousePressEvent = self.handle_left_click
self.setCentralWidget(label)
quit_button = QPushButton('Quit', self)
quit_button.clicked.connect(self.close_app)
quit_button.resize(quit_button.sizeHint())
quit_button.move(370, 260)
self.show()
def create_image(self):
img = np.zeros((300, 400, 3), dtype=np.uint8)
img.fill(255) # 设置为白色
return img
def handle_left_click(self, event):
if event.button() == Qt.LeftButton:
self.click_count += 1
self.update_image()
def update_image(self):
image = self.create_image()
painter = QPainter(image)
painter.drawText(10, 10, f"Mouse clicks: {self.click_count}")
painter.end()
pixmap = QPixmap.fromImage(image)
self.image_label.setPixmap(pixmap)
def close_app(self):
QApplication.quit()
if __name__ == "__main__":
app = QApplication([])
my_window = MyWindow()
app.exec_()
```
在这个代码中,我们首先创建了一个`MyWindow`类,它继承自`QMainWindow`并包含了相应的初始化方法和UI设置。我们创建了一个显示白底图片的标签,并绑定了鼠标左键点击事件到`handle_left_click`方法。每次点击,都会增加计数并在画布上更新文字。按下Esc键则会关闭应用。
注意:这个例子需要安装PyQt5,如果你还没有安装,可以使用`pip install PyQt5`命令来安装。同时,`cv2.cvtColor()`用于将OpenCV的图像格式转换为PyQt所需的格式。
阅读全文