Есть ли способ сделать это быстрее?C++

Программы на C++. Форум разработчиков
Anonymous
Есть ли способ сделать это быстрее?

Сообщение Anonymous »

Я работаю над добавлением возможностей рисования и стирания изображений с помощью OpenCV на C++. Но проблема в том, что он совсем не плавный, рисунок появляется только тогда, когда я отпускаю мышь, и он выглядит очень прямым, как вы можете видеть в этом видео

Код: Выделить всё

#include 
#include 

using namespace std;
using namespace cv;

Mat originalImage;
Mat currentImage;
Mat tempImage;
bool isDrawing = false;
bool isErasing = false;
Point startPoint;

void updateImage() {
addWeighted(originalImage, 1.0, tempImage, 1.0, 0.0, currentImage);
imshow("Drawing", currentImage);
}

static void drawCallback(int event, int x, int y, int flags, void* param) {
switch (event) {
case EVENT_LBUTTONDOWN:
if (flags & EVENT_FLAG_CTRLKEY) {
isErasing = true;
startPoint = Point(x, y);
}
else {
isDrawing = true;
startPoint = Point(x, y);
}
break;
case EVENT_MOUSEMOVE:
if (isDrawing) {
line(tempImage, startPoint, Point(x, y), Scalar(0, 0, 255), 8);
startPoint = Point(x, y);
updateImage();
}
else if (isErasing) {
line(tempImage, startPoint, Point(x, y), Scalar(0, 0, 0), 8);
startPoint = Point(x, y);
updateImage();
}
break;
case EVENT_LBUTTONUP:
isDrawing = false;
isErasing = false;
break;
}
}

int main()
{
string imagePath = "C:/Users/Yuri/Pictures/space.jpg";

originalImage = imread(imagePath, IMREAD_COLOR);

resize(originalImage, originalImage, { 1000, 500 }, 0, 0, INTER_NEAREST);

currentImage = Mat::zeros(originalImage.size(), originalImage.type());

tempImage = currentImage.clone();

namedWindow("Drawing");

updateImage();

setMouseCallback("Drawing", drawCallback, nullptr);

while (1) {
imshow("Drawing", currentImage);

if (waitKey(0) == 27)
break;
}

destroyAllWindows();
return 0;
}

Я хочу ускорить процесс и сделать рисование и стирание более плавными. Любые советы или рекомендации по оптимизации моего кода или использованию определенных функций OpenCV были бы потрясающими.
Когда я не использую изображения, мне не нужно использовать addWeighted, и поэтому он становится чрезвычайно гибким, но идея состоит в том, чтобы рисовать изображения, и я считаю, что использование addWeighted является причиной замедления, но я не нашел способов сделать то, что мне нужно, без него

Подробнее здесь: https://stackoverflow.com/questions/784 ... -it-faster

Вернуться в «C++»