- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 OpenCV 开发一个游戏项目。现在我必须制作一个简单的 GUI:一个只有一个按钮的窗口,仅使用 HighGui。
我不确定,但我想我应该使用这样的东西:
cvNamedWindow( "NameWindow" , CV_WINDOW_AUTOSIZE);
非常感谢任何帮助。
最佳答案
OpenCV 不提供按钮,但您可以轻松使用彩色矩形,并检查图像上的点击点是否在该矩形内。
请记住,OpenCV HighGui 非常简单,仅用于调试目的。您可能希望使用功能齐全的图形库,如 Qt 或类似库。
但是,这是一个显示(绿色)图像和顶部按钮的小示例:
单击按钮将在标准输出上打印“已单击”:
代码:
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
Mat3b canvas;
string buttonText("Click me!");
string winName = "My cool GUI v0.1";
Rect button;
void callBackFunc(int event, int x, int y, int flags, void* userdata)
{
if (event == EVENT_LBUTTONDOWN)
{
if (button.contains(Point(x, y)))
{
cout << "Clicked!" << endl;
rectangle(canvas(button), button, Scalar(0,0,255), 2);
}
}
if (event == EVENT_LBUTTONUP)
{
rectangle(canvas, button, Scalar(200, 200, 200), 2);
}
imshow(winName, canvas);
waitKey(1);
}
int main()
{
// An image
Mat3b img(300, 300, Vec3b(0, 255, 0));
// Your button
button = Rect(0,0,img.cols, 50);
// The canvas
canvas = Mat3b(img.rows + button.height, img.cols, Vec3b(0,0,0));
// Draw the button
canvas(button) = Vec3b(200,200,200);
putText(canvas(button), buttonText, Point(button.width*0.35, button.height*0.7), FONT_HERSHEY_PLAIN, 1, Scalar(0,0,0));
// Draw the image
img.copyTo(canvas(Rect(0, button.height, img.cols, img.rows)));
// Setup callback function
namedWindow(winName);
setMouseCallback(winName, callBackFunc);
imshow(winName, canvas);
waitKey();
return 0;
}
关于c++ - 如何仅使用 OpenCV HighGui 制作一个简单的一键式窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33937800/
有的程序有第一个,有的程序有第二个。两者有什么区别,我们什么时候使用它们? 最佳答案 我认为这是一个合理的问题。引自 OpenCV documentation : Headers layout In
我试图在 servlet 中使用 OpenCV,但每次运行 servlet 时都会弹出此错误。这是相同的堆栈跟踪: SEVERE: Servlet.service() for servlet [com
我是 OpenCV 的初学者,正在尽最大努力让一个简单的应用程序在嵌入式平台上运行。我交叉编译了 OpenCV 2.4.4 并根据相机和 GUI 支持的需要构建了 WITH_GTK=ON、WITH_U
我是第一次使用Eclipse在Android上使用OpenCV。 我使用以下行读取图像,并使用下一行获取其大小: Mat m = Highgui.imread(“C:/Users/IMG_5940.j
我正在尝试使用网络摄像头检测车道。我可以在开始时编译它并对其进行测试,但是在更改了我曾经使用的机器之后。 它不再工作了。给我一些错误。 以下是代码 int run() { bool pause
我正在尝试使用打开 CV/Java 中的 Highgui.imread 方法但它返回一个空矩阵,尽管我确保图像的路径是正确的。 public static void main(String[] arg
我在安装 OpenCV 时遇到了一些问题。我在这里获取了 2.3.1 Windows super 包:http://opencv.willowgarage.com/wiki/ .我将它提取到 C:\O
我正在使用相机在我的手机上捕捉图像,该手机使用 Android 4.03 和 opencv for android 2.4.3 在我的应用程序中,我使用 Highgui.imread 从磁盘读取图像
我需要编写一个简单的项目,我正在使用 opencv、ruby 和 mac。我已经通过 brew 安装了 opencv,通过 gem 安装了 rb_webcam。 # -*- coding: utf-8
我看到可以使用 OpenCV 调整窗口大小,例如: import cv2 img = cv2.imread('Test.jpg') cv2.imshow('image',img) cv2.namedW
我有代码从sdcard加载图像并将其发布到ImageView。 Mat mRgba = Highgui.imread(dir); Bitmap bmp = Bitmap.createBitmap(mR
Python 2.7.5 我将 Homebrew/科学添加到我的 brew 水龙头。 我跑了 brew install opencv. 我添加的 bash 配置文件 export PYTHONPATH
我知道有关此问题有几个,但没有一个问题向我展示了如何解决我遇到的错误。 使用this guide,我已经能够使用此指南和cmake编译当前的OpenCV版本(2.2)。因此,该版本工作正常,我可以在Q
我正在尝试使用 JavaCV 设置人脸检测。我已经有了 cvLoadImage 的工作代码,但是当我尝试通过 Highgui.imread 加载图像时,出现错误:'Highgui 无法解析' 和 'H
在 python 方式中,加载和显示图像非常简单。 import cv2 image = cv2.imread("path/to/image") cv2.imshow("test window", i
您好,我是 opencv(版本 2.4.7)的新手,并在 python 2.7.4 中使用它。我总是得到这个错误 HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP 每当我使
如果我不使用任何命名空间,我的代码就可以正常工作,但是当我尝试使用像这样的带有命名空间的方法时: cv::nameOfMethodInHighGUI() 编译器告诉我 cv 没有这样调用的成员方法。
我正在尝试使用这个库 https://github.com/dom96/nim-opencv OpenCV 的包装器。 运行nimble install opencv之后我可以在 ~/.nimble/
我正在使用 OpenCV 开发一个游戏项目。现在我必须制作一个简单的 GUI:一个只有一个按钮的窗口,仅使用 HighGui。 我不确定,但我想我应该使用这样的东西: cvNamedWindow( "
有时,在使用 OpenCV 进行视频处理时,实际显示一些叠加在视频序列上的信息是有益的。是否有可能做到这一点?如何做到这一点? 最佳答案 有一个函数 cv::putText 可用于将文本绘制到图像中。
我是一名优秀的程序员,十分优秀!