Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV-在窗口中拖动图像块_Opencv - Fatal编程技术网

OpenCV-在窗口中拖动图像块

OpenCV-在窗口中拖动图像块,opencv,Opencv,我正在尝试在OpenCV中制作一个拼图游戏。我正在做的是,我正在把一个图像转换成小正方形,它们是相等维度的图像。例如,如果我有一个x B大小的图像,那么我将其重新调整为640 x 640,并将此重新调整大小的图像分割为每个大小为64 x 64的正方形。我将这些方形图像保存在本地磁盘上 现在我想知道是否有可能将这些方形图像随机放置在一个窗口中,并拖动这些图像以匹配最终的获胜状态?我找不到实现拖放的方法。如果我能得到一些提示,那就太好了。我懒得写你的程序,但这里有一些你可能喜欢的部分: 鼠标: vo

我正在尝试在OpenCV中制作一个拼图游戏。我正在做的是,我正在把一个图像转换成小正方形,它们是相等维度的图像。例如,如果我有一个x B大小的图像,那么我将其重新调整为640 x 640,并将此重新调整大小的图像分割为每个大小为64 x 64的正方形。我将这些方形图像保存在本地磁盘上


现在我想知道是否有可能将这些方形图像随机放置在一个窗口中,并拖动这些图像以匹配最终的获胜状态?我找不到实现拖放的方法。如果我能得到一些提示,那就太好了。

我懒得写你的程序,但这里有一些你可能喜欢的部分:

鼠标:

void onmouse(int event, int x, int y, int mousestate, void *userptr)
{
    if (event==1) // lmousebuttondown, do something with x, y
}

namedWindow("win");
setMouseCallback( "win", onmouse );
然后,将一个小图像(您拖动的对象)绘制到大图像:

Rect r(x,y,small.cols, small.rows);
big(r) = small;

OpenCV不能在同一窗口上显示多个图像(本机)。但是,您可以编写一段代码,然后将其显示在窗口上

这种方法的缺点是,您必须存储一个数组,其中包含这些图像的放置位置信息(从地理位置上讲),因此当用户单击屏幕中间时,您可以准确地知道哪个图像位于该位置。但是在编写拖放动画时,您也会遇到一些主要的难题,因为OpenCV提供的功能无法做到这一点

有一些演示展示了如何处理OpenCV上的鼠标点击:

总之,OpenCV不是为这些类型的用户交互而构建的。我建议您研究Qt或其他一些技术来构建您的游戏

我记得看到了一个Qt演示,它实现了您想要的:


已经尝试过,但追加投票需要至少15个声誉:好的,没问题。坚持下去,你最终会获得更多的声誉。点击答案旁边的复选框,将其选为正式问题解决者,这是一个很好的做法。通过这样做,您将帮助未来的访客。祝你好运