推广如何做网上引流,哈尔滨优化关键词免费,王烨照片,做课题查新网站项目功能实现#xff1a;矩形、圆形、椭圆等几何形状绘制#xff0c;并与原图进行相应比例融合 按照之前的博文结构来#xff0c;这里就不在赘述了
一、头文件
drawing.h
#pragma once#includeopencv2/opencv.hppusing namespace cv;class DRAWING {
public:void…项目功能实现矩形、圆形、椭圆等几何形状绘制并与原图进行相应比例融合 按照之前的博文结构来这里就不在赘述了
一、头文件
drawing.h
#pragma once#includeopencv2/opencv.hppusing namespace cv;class DRAWING {
public:void drawing(Mat image);
};#pragma once二、函数实现
drawing.cpp
Mat backgrand, result; 定义一个画布背景backgrand和进行融合之后的结果result backgrand Mat::zeros(image.size(), image.type()); 背景图片的大小和原图一致不过是全0的黑色背景
矩形绘制 Rect rect; rect.x 100;rect.y 150;rect.width 200;rect.height 100; rectangle(backgrand, rect, Scalar(255, 0, 0), -1, 8, 0); 参数一处理的图片对象为backgrand 参数二矩形的相关起始点以及宽高参数信息 参数三颜色设置 参数四-1表示填充其余的正整数表示线条的宽度数越大线条越宽 参数五8这里代表LINE_8其他参数还有LINE_4(可用4表示)、LINE_AA((可用16表示)) 每个像素点都是浮点数连线的时候会产生锯齿通过相邻8个像素点进行消除锯齿 定义矩形的起始位置(x,y)以及矩形的高(y)和宽(x) 参数六表示偏移量类似微调的效果默认0即可
圆形绘制 circle(backgrand, Point(150, 150), 15, Scalar(0, 255, 0 ), 1); 参数一处理的图片对象为backgrand 参数二圆心位置 参数三半径 参数四颜色设置 参数五线条宽度-1表示填充其他正整数表示线条粗细
线条绘制 line(backgrand, Point(100, 100), Point(200, 200), Scalar(255, 255, 255), 4, LINE_8, 0); 参数一处理的图片对象为backgrand 参数二起始位置 参数三结束位置 参数四颜色设置 参数五线条宽度 参数六和上面类似LINE_8也可通过数字8进行替代 参数七微调偏移量默认0即可
椭圆绘制 RotatedRect rrt; rrt.center Point(200, 200);rrt.size Size(120, 90);rrt.angle 90.0; ellipse(backgrand, rrt, Scalar(0, 255, 255), 2, LINE_AA); 参数一处理的图片对象为backgrand 参数二椭圆绘制的相关参数信息包括椭圆中心位置、角度等 参数三颜色设置 参数四线条宽度 参数五和上面类似LINE_AA也可通过数字16进行替代
特征融合 addWeighted(image, 0.7, backgrand, 0.3, 0, result); 原图image和背景图片backgrand按7:3进行融合最终输出结果对象为result 这里的0表示beta也是一个偏移量微调的作用
#includedrawing.h
#includeiostream
#includeopencv2/opencv.hppvoid DRAWING::drawing(Mat image) {Mat backgrand, result;backgrand Mat::zeros(image.size(), image.type());Rect rect;rect.x 100;rect.y 150;rect.width 200;rect.height 100;rectangle(backgrand, rect, Scalar(255, 0, 0), -1, 8, 0);circle(backgrand, Point(150, 150), 15, Scalar(0, 255, 0 ), 1);line(backgrand, Point(100, 100), Point(200, 200), Scalar(255, 255, 255), 4, LINE_AA, 0);RotatedRect rrt;rrt.center Point(200, 200);rrt.size Size(120, 90);rrt.angle 90.0;ellipse(backgrand, rrt, Scalar(0, 255, 255), 2, LINE_AA);imshow(Drawing, backgrand);addWeighted(image, 0.7, backgrand, 0.3, 0, result);imshow(result, result);}三、主函数
yy_main.cpp
#include opencv2/opencv.hpp
#include iostream
#include drawing.husing namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src cv::imread(E:/C_workspace/beyond.jpg, IMREAD_COLOR);if (src.empty()) {printf(load image is false...\n);return -1;}namedWindow(yanyu, WINDOW_FREERATIO);imshow(yanyu, src);DRAWING yy;yy.drawing(src);waitKey(0);destroyAllWindows();return 0;
}项目结构如下 效果图如下