Всем привет. Есть кусок кода, в котором реализовано нахождение пикселя на картинке и вывода в lable. Может кто подсказать возможна ли реализация выбора не одного пикселя для определения, а допустим квадрата 20x20 пикселей. при этом узнать среднее значение пикселей, а затем вывести это значение в Lable.
Python:
def point1(self, text, value):
if text == 'Scene':
self.lab.setText(f'x1 = {value.x()}, y1 = {value.y()}. Интенсивность: ')
if text == 'View':
#self.lab.setText(f'{self.lab.text()} {value}')
Python:
class GraphicsView(QGraphicsView): # +++
clicked = pyqtSignal(str, str)
def mousePressEvent(self, event):
super(GraphicsView, self).mousePressEvent(event)
self.setCursor(Qt.DragMoveCursor)
# Получить положение мыши на экране
pos = event.globalPos()
image = QApplication.primaryScreen().grabWindow(
int(QApplication.desktop().winId()),
pos.x() - 23, pos.y() - 23, 47, 47).toImage()
color = image.pixelColor(23, 23)
if color.isValid():
self.clicked.emit('View', color.name())
def mouseReleaseEvent(self, event):
super(GraphicsView, self).mouseReleaseEvent(event)
self.setCursor(Qt.ArrowCursor)
class QS(QtWidgets.QGraphicsScene):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
width = Settings.NUM_BLOCKS_X * Settings.WIDTH
height = Settings.NUM_BLOCKS_Y * Settings.HEIGHT
self.setSceneRect(0, 0, width, height)
self.setItemIndexMethod(QtWidgets.QGraphicsScene.NoIndex)
for x in range(0,Settings.NUM_BLOCKS_X+1):
xc = x * Settings.WIDTH
self.addLine(xc,0,xc,height)
for y in range(0,Settings.NUM_BLOCKS_Y+1):
yc = y * Settings.HEIGHT
self.addLine(0,yc,width,yc)
class GraphicsScene(QGraphicsScene):
clicked = pyqtSignal(str, QPointF)
def mousePressEvent(self, event):
super(GraphicsScene, self).mousePressEvent(event)
sp = event.scenePos()
self.clicked.emit('Scene', sp)