草庐IT

c++ - 在类方法之间传递 QImage 对象

我有两个功能。在一个函数中,我有一个QImage然后我想将该QImage传递给另一个函数。这两个函数都有不同的参数。请告诉我该怎么做?CMakeLists.txtcmake_minimum_required(VERSION2.4.6)include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)rosbuild_init()#Qt#####################################################find_package(Qt4REQUIRED)set(QT_USE_QTGUITRUE)include(${

c++ - 使用Qt在图像上绘制文字

我想在图片上绘制文字。我使用此代码,但在图像上看不到任何文字。voidImageSaver::save(constQString&path)const{QImageimage(img_);QPainterp(&image);p.setPen(QPen(Qt::red));p.setFont(QFont("Times",12,QFont::Bold));p.drawText(image.rect(),Qt::AlignCenter,"Text");image.save(path);} 最佳答案 QPainter必须在图像有效之前完成I

c++ - 来自 HBITMAP 的 QImage

在我的纯Windows程序中,我使用了一个第三方库,它返回一个HBITMAP。有没有办法从其内容初始化QImage,即将其转换为QImage? 最佳答案 这是Qt4(QtGui)的实现方式:QImageimage(QPixmap::fromWinHBITMAP(hBitmap).toImage());这是Qt5(QtWinExtras)的实现方式:QPixmappixmap=QtWin::fromHBITMAP(hBitmap);QImageimage=pixmap.toImage();//orQtWin::imageFromHBI

c++ - 对 QImage 执行深拷贝

如何对QImage进行深拷贝?我的是这样的:texture_img=camWorker->getImage();QImageCamWorker::getImage(){QMutexLockerlocker(&mutex);returnQImg;}并且QImg来自视频流。但是我发现texture_img=camWorker->getImage();仅对QImage执行浅拷贝,当QImg在另一个线程中更改时,它会创建段错误。深拷贝能解决问题吗? 最佳答案 正如Amartel所指出的,QImage提供了一个copy方法。QImageima

c++ - 将 QImage 分成更小的部分

我有一张图片,我想把这张图片分成n张。所以我想知道如何使用QImage做到这一点?或者是否有更好的(性能方面的)Qt类来完成这项任务?例如,假设我有一个由1920x1080像素组成的图像,我想将它分成100block,这意味着每block将由192x108像素组成。请注意,我不想创建缩放到192x108的相同作品。每件作品都是主图片的一个独特部分。我附上了一张图片以使我的问题更清楚。此图像由1920x1080像素组成,每个用网格潜水的部分由192x108像素组成,我想将它们中的每一个都视为QImage对象,而不是将其实际划分为100block。有没有办法用QImage做到这一点?性能在

c++ - 在 Qt 中混合两个不同的图像

我的程序生成3个不同的图像,我想使用一些不透明度设置将它们组合起来。首先我有原始图像,我已经将其转换为QPixmap以在QGraphicsView中显示它。.然后我对这张图片进行了一些计算并生成了一个QImage,因为我需要基本的像素访问,我还添加了一个图例。.我想做的是能够混合两个图像,同时能够修改不透明度。我没有显示示例的工具,它应该如下所示:但是第一张图像和数据图像混合了不透明度。我也希望图例保持100%可见。如果需要,我可以为图例创建不同的QImage。我也清楚地知道哪个像素应该被认为是透明的而不是白色的。将来我想只用一个slider来调整不透明度,所以我认为如果有一个解决方案

c++ - Qt:QImage总是将透明色保存为黑色

如何在Qt不将透明颜色设为黑色的情况下将具有透明效果的文件保存为JPEG文件?我知道JPEG不支持alpha,黑色可能只是alpha的默认“0”值,但黑色是一种可怕的默认颜色。看起来这应该是一个简单的操作,但是在保存为JPEG时,我尝试过的所有蒙版和alpha函数都被忽略了。例如:image->load("someFile.png");//Hastransparentbackgroundoralphachannelimage->save("somefile.jpg","JPG");//Transparentcolorisblack我试过在保存为JPEG之前用白色填充图像,在保存之前将图

c++ - 使用 OpenCV 打开网络摄像头并使用 QLabel 显示它 - 白色窗口

我使用OpenCV、Qt库和VS2010在Win7x64上工作。我想用OpenCV打开我的相机,然后在从Mat转换为QImage之后用Qt显示捕获的帧,例如使用QLabel。我想这样做是因为使用函数imshow("camera",image)和waitKey()会减慢流式摄像机的速度。这是我的代码:intmain(){QApplicationa(argc,argv);QLabelmyLabel;VideoCapturecap(0);//namedWindow(c"camera",1);for(;;){cap>>image;//conversionfromMattoQImageMatde

c++ - 使用 OpenCV 的 imread() 从 qrc 读取图像

我想使用imread()从qrc中读取图像OpenCV的这种方式:Matimg=imread(":/TempIcons/logo.png");但最终img大小为[0x0]。我也试过:Matimg=imread("qrc://TempIcons/logo.png");但我得到的尺寸是一样的。我不想在QImage中加载图像然后将其转换为cv::Mat.有没有办法以简单的方式做到这一点?如果是,我该怎么做?谢谢 最佳答案 正如@TheDarkKnight所指出的,imread不知道Qt资源。但是,您可以编写自己的加载器,它使用QFile从

c++ - 如何将QImage转换为opencv Mat

我在互联网上搜索过,但找不到将QImage(或QPixmap)转换为OpenCVMat的方法。我该怎么做?感谢任何帮助。 最佳答案 如果QImage仍然存在,并且您只需要对其执行快速操作,那么您可以使用QImage内存构造一个cv::Mat:cv::Matmat(image.height(),image.width(),CV_8UC3,(cv::Scalar*)image.scanLine(0));这里假设QImage是3channel,即RGB888。如果QImage消失,那么您需要复制数据,参见Qimagetocv::Matco