laixinmin1234 2023-07-17 09:06 采纳率: 14.3%
浏览 74
已结题

关于#qt#的问题://注册鼠标操作(回调)函数 这个函数读取picture view图片上的坐标

img


我想用 cv::setMouseCallback("原图", onMouse, reinterpret_cast<void*> (img));//注册鼠标操作(回调)函数 这个函数读取picture view图片上的坐标和RGB颜色,用cv::imshow("原图",depth_PNG1);这个方式读取坐标没问题,但是我现在想把“原图”替换成我在qt ui上的picture view控件,这个我不会操作了,求大师指点

  • 写回答

10条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-17 10:04
    关注
    获得1.95元问题酬金
    • 以下回答由chatgpt基于相关博客总结生成:

      问题:在使用OpenCV时,您想要将"原图"替换为在Qt UI上的picture view控件,但不知道如何操作是吗?您希望得到什么样的指导和建议呢?

      解决方案: 1. 将OpenCV的图片绘制到Qt UI上的picture view控件,可以使用QImage和QPixmap的相关方法来实现。

      参考资料中的代码段落0已经提供了一个示例函数ShowImage来将OpenCV的Mat绘制到QGraphicsView控件上。您可以根据您的需要将其移植到Qt UI的picture view控件上。

      首先,确保您已经在Qt项目中添加了OpenCV的依赖项,并在代码中包含了OpenCV的相关头文件。

      #include <opencv2/core/core.hpp>
      #include <opencv2/highgui/highgui.hpp>
      #include <opencv2/imgproc/imgproc.hpp>
      using namespace cv;
      
      1. 在Qt UI的代码中添加一个QGraphicsView控件,用于显示图像。

      在参考资料的示例MainWindow类的构造函数中,已经演示了如何创建一个QGraphicsScene和QGraphicsView,并将图像添加到场景中显示。

      // 创建一个QGraphicsScene
      QGraphicsScene *scene = new QGraphicsScene;
      // 将QGraphicsScene设置给QGraphicsView控件
      ui->graphicsView->setScene(scene);
      // 显示QGraphicsView控件
      ui->graphicsView->show();
      
      1. 将OpenCV的Mat转换为QImage,并设置给QGraphicsView控件。

      在参考资料的示例代码中,采用了如下方法将OpenCV的Mat转换为QImage,并设置给QGraphicsView控件。

      // 加载并处理OpenCV的图片
      Mat srcImage = imread("D:\\codeSpace\\test.jpg");
      int width = srcImage.cols;
      int height = srcImage.rows;
      cvtColor(srcImage, srcImage, COLOR_BGR2RGB);
      // 将Mat转换为QImage
      QImage disImage = QImage(srcImage.data, width, height, QImage::Format_RGB888);
      // 将QImage设置给QGraphicsView控件
      scene->addPixmap(QPixmap::fromImage(disImage));
      

      综合以上步骤,可以将参考资料中的示例代码移植到您的项目中,并将OpenCV的图片显示在Qt UI上的picture view控件中。请确保路径和文件名正确,并根据实际需求进行适当修改。

      如果遇到了其他问题或需要更详细的指导和建议,请提供更具体的信息。

    评论

报告相同问题?

问题事件

  • 系统已结题 7月25日
  • 修改了问题 7月17日
  • 创建了问题 7月17日