/
ka_pie
/
PeakOff
Обзор
Документация
Войти
/
ka_pie
/
PeakOff
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/imageutils.cpp
74 строки
2 KB
Viktoria
final version of PeakOff
14 июл 2026, 11:13
14 июл 2026, 11:13
a838933
Код
Авторство
О чём код?
#include "imageutils.h" cv::Mat ImageUtils::qImageToCvMat(const QImage &image) { QImage conv = image.convertToFormat(QImage::Format_RGBA8888); return cv::Mat( conv.height(), conv.width(), CV_8UC4, (void*)conv.bits(), conv.bytesPerLine() ).clone(); } QImage ImageUtils::cvMatToQImage(const cv::Mat &mat) { if (mat.empty()) return QImage(); cv::Mat rgb; cv::cvtColor(mat, rgb, cv::COLOR_BGR2RGB); return QImage((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888).copy(); } cv::Mat ImageUtils::replaceBackground(const cv::Mat &src, const cv::Mat &mask, const QColor &bgColor) { cv::Mat result, maskFloat; mask.convertTo(maskFloat, CV_32FC1, 1.0 / 255.0); cv::Mat maskColor; cv::cvtColor(maskFloat, maskColor, cv::COLOR_GRAY2BGR); cv::Mat srcFloat, bgFloat; cv::Mat bg = cv::Mat(src.size(), src.type(), cv::Scalar(bgColor.blue(), bgColor.green(), bgColor.red())); src.convertTo(srcFloat, CV_32FC3); bg.convertTo(bgFloat, CV_32FC3); cv::multiply(srcFloat, maskColor, srcFloat); cv::multiply(bgFloat, cv::Scalar::all(1.0) - maskColor, bgFloat); cv::add(srcFloat, bgFloat, result); result.convertTo(result, CV_8UC3); return result; } cv::Mat ImageUtils::updateMask(const cv::Mat ¤tMask, const cv::Mat &strokeMask, bool isEraser) { cv::Mat resultMask = currentMask.clone(); cv::Mat strokeGray; cv::resize(strokeMask, strokeGray, currentMask.size()); if (isEraser) { cv::bitwise_and(resultMask, ~strokeGray, resultMask); } else { cv::bitwise_or(resultMask, strokeGray, resultMask); } return resultMask; } cv::Mat ImageUtils::replaceBackgroundImage( const cv::Mat &src, const cv::Mat &mask, const cv::Mat &background) { cv::Mat bg; cv::resize(background, bg, src.size()); cv::Mat result = bg.clone(); src.copyTo(result, mask); return result; }