1
나는 mouseClicks를 기반으로 OpenCV로 이미지를 조작하고 싶습니다.QLabel OpenCV Image 좌표 Qt에서
QLabel을 사용하여 cv :: Mat 이미지를 표시하고 있습니다. 이제 내 문제는 이미지와 관련하여 마우스 클릭 위치를 얻는 것입니다. 그래서, 이미지의 꼭대기에 (0,0)을 표시하고 싶습니다.
다음은 내 mousePressEvent이지만 올바른 좌표가 아닙니다.
void MainWindow::mousePressEvent(QMouseEvent* ev)
{
//This seems to work thanks to Pavel
QPoint P = ui->label->mapFrom(this, ev->pos())
//if(ui->label->underMouse())
{
QMessageBox msgBox;
//m
sgBox.setText(QString("Click Detected X=")+QString::number(mFirstX)+QString(" Y=")+QString::number(mFirstY));
msgBox.setText("x ="+QString::number(P.x()) + " y= " + QString::number(P.y()));
msgBox.exec();
}
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseMove)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
///////
*/// This seem to still give wrong position, these values do not match to those I get when I /// click
///////
const QPoint P = ui->label->mapFrom(this, mouseEvent->pos());
//statusBar()->showMessage(QString("Mouse move (%1,%2)").arg(mouseEvent->pos().x()).arg(mo
useEvent->pos().y()));
statusBar()->showMessage(QString("Mouse move (%1,%2)").arg(P.x()).arg(P.y()));
}
return false;
}*
도와주세요.
출력을 제공해야합니다. 무엇을 얻으십니까? 또한 장면에 첨부 된 객체 (이미지)로 정의하고 재생하는 것이 더 쉽기 때문에이 목적으로 QGraphicsScene을 사용할 것입니다. – baci
'QLabel'의 정렬을'Qt :: AlignTop | Qt :: AlignLeft' 함수를 호출하고'scaledContents' 속성이 false인지 확인하십시오. MainWindow 좌표를 레이블 좌표로 변환하려면'ui-> label-> mapFrom (this, ev-> pos())'를 사용해야한다. –
완벽한 ...! 고마워요 @Pavelstrakhov. – mkuse