首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在openCV c++中填充圆角矩形

在OpenCV C++中填充圆角矩形,可以使用以下步骤:

  1. 导入OpenCV库:
代码语言:txt
复制
#include <opencv2/opencv.hpp>
  1. 创建一个空白图像:
代码语言:txt
复制
cv::Mat image(height, width, CV_8UC3, cv::Scalar(0, 0, 0));

其中,height和width分别表示图像的高度和宽度,CV_8UC3表示图像类型为8位无符号整数,3个通道(RGB),cv::Scalar(0, 0, 0)表示填充颜色为黑色。

  1. 绘制圆角矩形:
代码语言:txt
复制
cv::Scalar fill_color(255, 255, 255);  // 填充颜色为白色
cv::Point2f center(center_x, center_y);  // 圆角矩形的中心点坐标
cv::Size2f size(width, height);  // 圆角矩形的宽度和高度
int corner_radius = radius;  // 圆角的半径
cv::Rect rect(center - size / 2, center + size / 2);
cv::rectangle(image, rect, fill_color, -1);
cv::Scalar corner_fill_color(0, 0, 0);  // 圆角填充颜色为黑色
cv::RNG rng;
for (int i = 0; i < corner_radius; ++i) {
    cv::Point2f center_top_left(rect.x + corner_radius, rect.y + corner_radius);
    cv::Size2f size_top_left(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
    cv::ellipse(image, center_top_left, size_top_left, 180.0, 0.0, 90.0, corner_fill_color, -1);
    cv::Point2f center_top_right(rect.x + rect.width - corner_radius, rect.y + corner_radius);
    cv::Size2f size_top_right(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
    cv::ellipse(image, center_top_right, size_top_right, 270.0, 0.0, 90.0, corner_fill_color, -1);
    cv::Point2f center_bottom_left(rect.x + corner_radius, rect.y + rect.height - corner_radius);
    cv::Size2f size_bottom_left(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
    cv::ellipse(image, center_bottom_left, size_bottom_left, 90.0, 0.0, 90.0, corner_fill_color, -1);
    cv::Point2f center_bottom_right(rect.x + rect.width - corner_radius, rect.y + rect.height - corner_radius);
    cv::Size2f size_bottom_right(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
    cv::ellipse(image, center_bottom_right, size_bottom_right, 0.0, 0.0, 90.0, corner_fill_color, -1);
}

其中,fill_color表示填充颜色,center_x和center_y表示圆角矩形的中心点坐标,width和height表示圆角矩形的宽度和高度,radius表示圆角的半径。

  1. 显示图像:
代码语言:txt
复制
cv::imshow("Filled Round Rect", image);
cv::waitKey(0);

完整的代码示例:

代码语言:txt
复制
#include <opencv2/opencv.hpp>

int main() {
    int width = 640;
    int height = 480;
    int center_x = width / 2;
    int center_y = height / 2;
    int radius = 50;

    cv::Mat image(height, width, CV_8UC3, cv::Scalar(0, 0, 0));
    cv::Scalar fill_color(255, 255, 255);  // 填充颜色为白色
    cv::Point2f center(center_x, center_y);  // 圆角矩形的中心点坐标
    cv::Size2f size(width, height);  // 圆角矩形的宽度和高度
    int corner_radius = radius;  // 圆角的半径
    cv::Rect rect(center - size / 2, center + size / 2);
    cv::rectangle(image, rect, fill_color, -1);
    cv::Scalar corner_fill_color(0, 0, 0);  // 圆角填充颜色为黑色
    cv::RNG rng;
    for (int i = 0; i < corner_radius; ++i) {
        cv::Point2f center_top_left(rect.x + corner_radius, rect.y + corner_radius);
        cv::Size2f size_top_left(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
        cv::ellipse(image, center_top_left, size_top_left, 180.0, 0.0, 90.0, corner_fill_color, -1);
        cv::Point2f center_top_right(rect.x + rect.width - corner_radius, rect.y + corner_radius);
        cv::Size2f size_top_right(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
        cv::ellipse(image, center_top_right, size_top_right, 270.0, 0.0, 90.0, corner_fill_color, -1);
        cv::Point2f center_bottom_left(rect.x + corner_radius, rect.y + rect.height - corner_radius);
        cv::Size2f size_bottom_left(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
        cv::ellipse(image, center_bottom_left, size_bottom_left, 90.0, 0.0, 90.0, corner_fill_color, -1);
        cv::Point2f center_bottom_right(rect.x + rect.width - corner_radius, rect.y + rect.height - corner_radius);
        cv::Size2f size_bottom_right(corner_radius * 2 - i * 2, corner_radius * 2 - i * 2);
        cv::ellipse(image, center_bottom_right, size_bottom_right, 0.0, 0.0, 90.0, corner_fill_color, -1);
    }

    cv::imshow("Filled Round Rect", image);
    cv::waitKey(0);

    return 0;
}

推荐的腾讯云相关产品:腾讯云智图图像处理服务,可以用于图像处理和计算视觉,链接地址:https://cloud.tencent.com/product/ivp

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端 + AI —— 走进无码时代

组件的形状检测 接下来,我们需要通过形状检测从遮罩区筛选出多个可用样式还原的组件,比如矩形、带圆角矩形和圆形。...OpenCV提供线段检测方法cv2.HoughLinesP,输入外轮廓,输出检测到的线段,具体代码实现如下: # 检测矩形 def detectRectangle(img, width, height)...3.1 圆角计算 在样式定义圆角被限制在矩形的四个顶点处,圆角弧度取决于它的半径,因此圆角计算的主要目标就是识别圆角的半径。 根据圆角的4个方位,我们将组件区域划分为4块进行逐块分析。...,是组件框与填充组件的差集。...内轮廓则需要分两步,首先对外轮廓填充图与色块填充图进行差运算得到“内域”,再对内域进行cv2.findContours。

1.2K30

如何制作渐变色图形

下面小编就向大家介绍如何在条码标签软件制作渐变色图形。   首先打开条码标签软件,根据标签纸的实际尺寸设置标签的大小。...然后点击软件左侧的“圆角矩形”按钮在标签上绘制一个圆角矩形,勾选填充内部,设置圆角的大小。...01.png   点击填充样式处的下拉菜单,选择渐变填充,然后点击起始颜色和结束颜色按钮,在拾色器中选择需要的颜色。 02.png   点击渐变方向的下拉菜单,从中选择一个合适的方向。...03.png   渐变图形制作完成了,不单是圆角矩形可以制作成渐变色,其他的图形也都支持渐变效果,比如矩形和三角形。...04.png   综上所述,就是在条码标签打印软件制作渐变色图形的方法, 软件渐变颜色方向等都可以根据自己的需求灵活调整,还可以自定义方向。做出的渐变图形就可以放在标签配合其他设计一起使用了。

1.9K20
  • PS如何制作圆角矩形Logo

    访问了很多个人网站都使用了圆角矩形Logo和favicon图标,挺好看的很喜欢这种风格,应该如何设计呢?...软件(如果电脑没有安装的话可以使用在线PS工具)进行制作,这边以在线PS工具为例 2、首先点击右上角的文件 >> 新建 3、在弹出的项目框设置Logo项目名字、宽度、高度、背景色(推荐选择透明)...4、创建完后画布如下 5、点击左侧工具栏的 矩形工具功能 >> 右击选择矩形工具 6、顶部会出现矩形工具设置功能,填充类型选择无(为了可以自定义喜欢的颜色),选择角半径(输入需要的半径25PX)...7、在画布上面画出需要的圆角矩形大小,然后放开鼠标左键即可绘制完成 8、绘制完如下 9、绘制完圆角矩形看起来有点单调,我们来给他填充下颜色 首先点击顶部导航栏的 图层 >> 新建填充图层 >> 纯色...,在顶部文字工具菜单栏选中字体样式、字体大小、字体颜色 15、设计完后如下 到此PS绘制圆角矩形Logo步骤完成啦!

    1.9K20

    【愚公系列】2023年11月 WPF控件专题 Rectangle控件详解

    一、Rectangle控件详解Rectangle控件是WPF中用于绘制矩形形状的控件。它可以在UI中用于多种用途,绘制边框和填充区域等。...除了上述属性,Rectangle控件还有其他一些常用属性,:RadiusX和RadiusY:用于设置圆角的横向和纵向半径;Stretch:用于指定如何拉伸或缩放矩形以适应其父元素;Opacity:用于设置透明度...例如,以下是一个带有圆角填充透明度的Rectangle控件:<Rectangle Width="100" Height="100" Fill="Blue" Stroke="Black" StrokeThickness...1.属性介绍WPFRectangle控件常用的属性有:Fill:设置矩形填充的Brush对象,可以是SolidColorBrush、GradientBrush等等。...CornerRadius:设置矩形圆角半径,可以单独设置每个角的半径。Width和Height:设置矩形的宽度和高度。Margin:设置矩形与其父容器之间的边距。

    57731

    条码打印软件里绘制圆角矩形

    条码打印软件可以绘制多种图形,比如三角形、矩形圆角矩形、圆形、菱形和五角星等。使用者就可以根据自己的需求在软件设计出符合自己需要的标签。下面就给大家演示绘制圆角矩形的方法。...打开条码标签软件,新建标签之后,点击软件左侧的“圆角矩形”按钮,在画布上绘制圆角矩形对象。 01.png 圆角矩形绘制好后,在软件右侧勾选填充内部,可以设置圆角的大小,填充样式和颜色等。...其中填充样式可以选择单色填充、渐变填充、阴影填充或者纹理填充。 02.png 勾选显示线条,可以设置线条的粗细、样式和颜色,其中线条的样式有实线、虚线、点线、虚点线等。还可以设置圆角的大小。...03.png 在软件绘制圆角矩形时,如果对圆角弧度不满意,可以根据自己的需求进行调整。如果想要了解更多有关条码标签软件的信息,请持续关注我们。

    1.1K40

    VC++中使用OpenCV进行形状和轮廓检测

    VC++中使用OpenCV进行形状和轮廓检测 在VC++中使用OpenCV进行形状和轮廓检测,轮廓是形状分析以及物体检测和识别的有用工具。...如下面的图像Shapes.png中有三角形、矩形、正方形、圆形等,我们如何去区分不同的形状,并且根据轮廓进行检测呢?...判断轮廓多边形的形状类型,特别注意矩形和正方形的区别,我们根据轮廓的宽高比来区分,当轮廓宽高比大于0.95或者小于1.05时我们可以认定轮廓为正方形 4、最后我们在第三步基础上,绘制轮廓或填充轮廓,颜色为粉色...;绘制边界包围盒,颜色为绿色;在边界包围盒左上方往上5像素的位置,绘制其形状的描述文字 C++示例代码 示例代码如下: #include #include...C++ in 4 HOURS | Including 3x Projects | Computer Vision Learn-OpenCV-cpp-in-4-Hours LEARN OPENCV in

    33100

    学习OpenCV,新手常会问我的十个问题

    Python下面截取矩形区域: roi = image[y:y+height,x:x+width,:] 一句话搞定。...OpenCV怎么没有填充几何对象的方法?...我是学习OpenCV C++版本还是Python版本 解答: 其实OpenCV现在SDK版本支持 C++, Python,Java,JS等语言。...学什么语言主的SDK主要是看你想从事哪里方向,如果想做机器视觉、相机开发的方向,建议学习OpenCV C++版本,如果是对开发板移植算法话,选择C++,不过现在python也被很多开发板支持,特别是国外的智能硬件...10 OpenCV4与前面的版本有什么区别 解答: 其实在传统的图像处理模块没有什么区别,但是OpenCV4对深度神经网络支持,已经集成支持tensorflow/caffe 的离线模型,OpenVINO

    1.2K60

    学习OpenCV,新手常会问我的十个问题 | 视觉入门

    Python下面截取矩形区域: roi = image[y:y+height,x:x+width,:] 一句话搞定。...OpenCV怎么没有填充几何对象的方法?...我是学习OpenCV C++版本还是Python版本 解答: 其实OpenCV现在SDK版本支持 C++, Python,Java,JS等语言。...学什么语言主的SDK主要是看你想从事哪里方向,如果想做机器视觉、相机开发的方向,建议学习OpenCV C++版本,如果是对开发板移植算法话,选择C++,不过现在python也被很多开发板支持,特别是国外的智能硬件...10 OpenCV4与前面的版本有什么区别 解答: 其实在传统的图像处理模块没有什么区别,但是OpenCV4对深度神经网络支持,已经集成支持tensorflow/caffe 的离线模型,OpenVINO

    1.3K30

    Android开发笔记(八)神奇的shape

    shape意即形状,是Android描述规则几何图形的定义,ShapeDrawable其实就是Drawable的一个子类。...根节点下定义了六个节点:corners(圆角)、gradien(渐变)、padding(间隔)、size(尺寸)、solid(填充)、stroke(描边),各节点的属性值主要是各种长宽、半径、角度,以及颜色...为rectangle表示矩形(默认),为oval表示椭圆(此时corners节点将失效),为line表示直线(此时必须设置stroke节点,不然会报错),为ring表示圆环。...当dashGap和dashWidth有一个值为0,则描边为实线   无stroke节点表示描边不存在 实际运用,常用的就是三个节点:corners(圆角)、solid(填充)、stroke(描边...shape自身的属性一般不用设置(默认矩形就好了)。

    1.5K30

    我为什么要写《OpenCV Android 开发实战》这本书

    计算机视觉作为人工智能的分支学科之一、符合未来科技发展方向,OpenCV是开源的可以商业应用的最流行的计算机视觉框架,包含了3000多个算法实现,其SDK支持Java、C++、Python等编程语言,支持...1.5 小结 第2章Mat与Bitmap对象 2.1 Mat对象 2.2 AndroidBitmap对象 2.3 基础形状绘制与填充 2.2.1...基于Mat的绘制与填充 2.2.2 Bitmap上的绘制与填充 2.4 Mat与Bitmap转换与使用 2.5 小结 第3章Mat像素操作...5.7.3 - 绘制最小外接矩形 5.7 轮廓分析 绘制外接矩形、最小外接矩形、横纵比、面积、轮廓周长等 5.8 图像直方图 5.8.1...7.4.2 –本地方法定义与OpenCV C++代码编写 7.4.3 –Java的代码实现与运行演示 7.5 小结 第8章OCR识别 8.1什么是OCR

    1.7K30

    「中秋来袭」没想到,用OpenCV竟能画出这么漂亮的月饼「附源码」

    通过OpenCV,可以绘制出具有浓厚节日氛围的月饼,无论是其光滑的外表还是凹凸不平的纹理,都能栩栩生地展现在面前。...第一步在C++、常规 选项里添加用到的OpenCV头文件路径。 这个路径具体在哪里,要看自己的OpenCV安装路径。 为了方便大家粘贴,我这里贴出来。...,同时填充矩形的内部为绿色。...六、总结 中秋节是中国传统文化重要的节日之一,而使用OpenCV绘制精美的月饼和玉兔图像,则是将传统与科技相结合的创新之举。...在这个特殊的中秋节,借助OpenCV的魔力,在绘制月饼和玉兔的过程,感受传统文化的魅力和现代科技的力量。用创意和技术,为这个美好的节日增添更多的喜悦和祝福。

    35540
    领券