c_cpp OpenCV创建窗口与GUI

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp OpenCV创建窗口与GUI相关的知识,希望对你有一定的参考价值。

#include <opencv2/opencv.hpp>
#include <sstream>
using namespace cv;
using namespace std;
// 注意 回调函数的参数 必须是 (int , void*)
void onchange(int position, void* param)
{
	// 空指针要先 向Mat内容指针 转换,然后 再取值
	Mat srcImage = *(Mat*)param;
	Mat dstImage;
	blur(srcImage, dstImage, Size(position, position));
	// getTrackbarPos 可以返回当前轨迹条的位置
	cout << "当前的轨迹条位置是 : " << getTrackbarPos("blur", "blur change") << endl;
	imshow("blur change", dstImage);
	waitKey(0);
}
int main(int argc, char *argv[])
{
	Mat srcImage = imread("1.jpg", 100);
	int blurFilterSize = 1;
	// 创建一个窗口,注意窗口名要一致
	namedWindow("blur change", WINDOW_AUTOSIZE);
	// 创建一个轨迹条,这里 指定了轨迹条的变化量 blurFIlterSize 和 回调函数 onchange
	// 原图 srcImage 作为传递参数
	createTrackbar("blur", "blur change", &blurFilterSize, 8, onchange, &srcImage);
	// 程序结果,在 回调函数中显示,主函数尾 需要调用回调函数
	onchange(blurFilterSize, &srcImage);
	return 0;
}
#include <opencv2/opencv.hpp>
using namespace cv;

//enum {
// WINDOW_NORMAL = 0x00000000, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
// WINDOW_AUTOSIZE = 0x00000001, // the user cannot resize the window, the size is constrainted by the image displayed
// WINDOW_OPENGL = 0x00001000, // window with opengl support
//
// WINDOW_FULLSCREEN = 1, // change the window to fullscreen
// WINDOW_FREERATIO = 0x00000100, // the image expends as much as it can (no ratio constraint)
// WINDOW_KEEPRATIO = 0x00000000 // the ratio of the image is respected
//};

int main(int argc, char* argv[])
{
	Mat srcImage = imread("1.jpg", 199);
	imshow("src", srcImage);
	// AUTOSIZE 用户不能靠拉动窗口调整图片大小
	namedWindow("src-test1", WINDOW_AUTOSIZE);
	imshow("src-test1", srcImage);
	// NORMAL 用户能靠拉动窗口调整图片大小
	namedWindow("src-test2", WINDOW_NORMAL);
	imshow("src-test2", srcImage);
	// FULLSCRENN 效果与 AUTOSIZE 几乎一致
	namedWindow("src-test3", WINDOW_FULLSCREEN);
	imshow("src-test3", srcImage);
	// FREERATIO 效果与 NORMAL 几乎一致
	namedWindow("src-test4", WINDOW_FREERATIO);
	imshow("src-test4", srcImage);
	// WINDOW_OPENGL 需要有OPEN_GL的库支持
	//namedWindow("src-test5", WINDOW_OPENGL);
	//imshow("src-test5", srcImage);
	
	// destroyWindow 用来关闭窗口
	destroyWindow("src");
	// 等待任意键输入
	waitKey(0);
	// destroyAllWindows() 无参数,关闭所有窗口
	destroyAllWindows();
	return 0;
}

以上是关于c_cpp OpenCV创建窗口与GUI的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 在win32 gui应用程序中创建一个控制台窗口

qt:在一个 gui 窗口中包含 opencv 和 opengl 子窗口

Python opencv gui 退出

opencv使用问题总结

[OpenCV实战]28 基于OpenCV的GUI库cvui

在 MFC/OpenCV 项目的新窗口中进行额外初始化