OpenCV не предоставляет кнопку , но вы можете легко использовать цветной прямоугольник и проверить, находится ли точка щелчка на изображении внутри этого прямоугольника.
Помните, что OpenCV HighGui очень прост и предназначен только для целей отладки. Вы можете использовать полнофункциональную графическую библиотеку как Qt или аналогичную.
Однако это небольшой пример, показывающий (зеленое) изображение и кнопку сверху:
Щелчок по кнопке будет печатать «Щелкнуть» на stdout:
Код:
#include
#include
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;
}
Удалить элемент с id
равный removeme
:
$("#removeme").remove();
Для удаления элемента с id
равный removeme
, только если это пусто:
$("#removeme:empty").remove();
Для удаления весь пустой <div>
с:
$("div:empty").remove();
РЕДАКТИРОВАНИЕ: , Если это не пусто, но имеет пробел:
if($.trim($("#removeme").text()) == "") {
$("#removeme").remove();
}
Я думаю, что Вы хотите это:
$('div#outer div:empty').remove();
Это удалит все пустые отделения в div#outer узле
Я не мог найти селектор, который игнорирует текстовые узлы, таким образом, это - самый быстрый/самый грязный фрагмент кода, я мог придумать.
$("#header").each(function() {
if($(this).children().length < 1)
$(this).remove()
});
Я пошел с:
$('#outer > div').filter(function (index) {
return $(this).children().length < 1;
}).remove();
Это говорит:
К сожалению, это приведет к удалению div, если он содержит текст, что, вероятно, не то, что хотел бы исходный плакат. Обычный текст не считается дочерним.