return;
auto logo = cv::imread(config.logo_path.c_str(), cv::IMREAD_COLOR);
-
- auto color_frame = convert_to_scalar(config.bgcolor);
auto color_white = cv::Scalar(255, 255, 255);
-
auto logoSize = makeEven(image.size() / 5);
- auto logoFrameSize = makeEven(logoSize + logoSize / 10);
cv::resize(logo, logo, logoSize);
cv::Mat maskMat = cv::Mat::zeros(image.size(), image.type());
cv::Mat logoMat = cv::Mat::zeros(image.size(), image.type());
auto logoRect = cv::Rect((image.size() - logoSize) / 2, logoSize);
- auto logoFrameRect = cv::Rect((image.size() - logoFrameSize) / 2, logoFrameSize);
logo.copyTo(logoMat(logoRect));
switch (config.finder_shape) {
case MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT:
__round_rect(maskMat, logoRect, color_white);
- __round_rect(image, logoFrameRect, color_frame);
break;
case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
cv::circle(maskMat, image.size() / 2, logoSize.width / 2, color_white, -1);
- cv::circle(image, image.size() / 2, logoFrameSize.width / 2, color_frame, -1);
break;
default:
cv::rectangle(maskMat, logoRect, color_white, -1);
- cv::rectangle(image, logoFrameRect, color_frame, -1);
break;
}
cv::multiply(cv::Scalar::all(1.0) - maskMat, image, image);
static void drawDesignQR(cv::Mat &buf, const BarcodeConfig &config)
{
- if (config.type != MV_BARCODE_QR || (config.data_shape == MV_BARCODE_GENERATE_ATTR_SHAPE_RECT &&
- config.finder_shape == MV_BARCODE_GENERATE_ATTR_SHAPE_RECT))
+ if (config.type != MV_BARCODE_QR || ((config.data_shape == MV_BARCODE_GENERATE_ATTR_SHAPE_RECT &&
+ config.finder_shape == MV_BARCODE_GENERATE_ATTR_SHAPE_RECT) &&
+ config.logo_path.empty()))
return;
const int resize_scale = 16;
cv::Mat resize_buf(buf.rows * resize_scale, buf.cols * resize_scale, CV_8UC1, cv::Scalar(255));