【发布时间】:2014-03-16 17:26:48
【问题描述】:
我在 mac osx 10.9 中使用了一个简单的 c++ 程序,使用的是 opencv 2.4.8,它已经编译为 QT 支持和 OPENGL 支持。这是我用于构建 opencv 2.4.8 的 cmake 配置的相关部分
GUI:
-- QT 4.x: YES (ver 4.8.6 EDITION = OpenSource)
-- QT OpenGL support: YES (/usr/local/Cellar/qt/4.8.5/lib/QtOpenGL.framework)
-- OpenGL support: YES (/System/Library/Frameworks/AGL.framework /System/Library/Frameworks/OpenGL.framework)
这是一个简单的 GUI 程序,
int main( int argc, char *argv[] ) { namedWindow("my-win", WINDOW_OPENGL);
int desiredWindowWidth = 800, desiredWindowHeight =600;
resizeWindow("my-win", desiredWindowWidth, desiredWindowHeight);
cv::VideoCapture capture(0);
for(;;) {
Mat view;
if( capture.isOpened() )
{
capture >> view;
}
imshow("my-win", view);
char key = (char)waitKey(30);
if( key == 's') {
unsigned char* pixels = new unsigned char [ 3 * desiredWindowWidth * desiredWindowHeight];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glReadPixels(0, 0, desiredWindowWidth, desiredWindowHeight, GL_RGB, GL_UNSIGNED_BYTE, pixels);
Mat savedImage(desiredWindowHeight, desiredWindowWidth, CV_8UC3, pixels);
cv::flip(savedImage, savedImage, 0);
imwrite("./foo.jpg", savedImage);
}
}
}
结果:我得到一个窗口,其中包含当前摄像机图像作为输出。到目前为止,一切都很好。 但是与我要求的(800 x 600)可能是400 x 300的窗口相比,我得到的窗口很小。此外,如果我给出任何其他比例窗口大小参数(例如:1200 x 900),我仍然会得到相同大小的窗口。看起来“resizeWindow”无法正常运行。
无法检查创建的窗口的大小。我所做的是将窗口另存为图像,我得到一个黑色的 800 x 600 图像,窗口内容作为 400x300 部分出现在一个角落。
【问题讨论】:
-
那是视网膜显示器吗?可能与此有关。此外,您的配置同时提到了 Qt 4.8.5 和 Qt 4.8.6。这看起来很奇怪。
标签: c++ qt opengl opencv user-interface