函数名:full_rotated_rect

函数参数: image输入图像,rect希望在图像中填充的RotatedRect,color填充的颜色

主要的思路是:先找到RotatedRect的四个顶点,然后画出外框。再利用四个顶点找出其中平行两边的所有点,对相应的两个点进行连接。

 void full_rotated_rect(Mat &image, const RotatedRect &rect, const Scalar &color)
{
CvPoint2D32f point[];
Point pt[];
vector<Point> center1, center2; /*画出外框*/
cvBoxPoints(rect, point);
for (int i = ; i<; i++)
{
pt[i].x = (int)point[i].x;
pt[i].y = (int)point[i].y;
}
line(image, pt[], pt[], color, );
line(image, pt[], pt[], color, );
line(image, pt[], pt[], color, );
line(image, pt[], pt[], color, ); /*填充内部*/
find_all_point(pt[], pt[], center1); /*找出两点间直线上的所有点*/
find_all_point(pt[], pt[], center2);
vector<Point>::iterator itor1 = center1.begin(), itor2 = center2.begin();
while (itor1 != center1.end() && itor2 != center2.end())
{
line(image, *itor1, *itor2, color, ); /*连接对应点*/
itor1++;
itor2++;
} vector<Point>().swap(center1);
vector<Point>().swap(center2);
}

函数名:find_all_point

函数参数:start起始点,end结束点,save保存点的容器

主要思路:递归查找两点的中点,直到两点相同。

 void find_all_point(Point start, Point end, vector<Point> &save)
{
if (abs(start.x - end.x) <= && abs(start.y - end.y) <= )
{
save.push_back(start);
return; /*点重复时返回*/
} Point point_center;
point_center.x = (start.x + end.x) / ;
point_center.y = (start.y + end.y) / ;
save.push_back(point_center); /*储存中点*/
find_all_point(start, point_center, save); /*递归*/
find_all_point(point_center, end, save);
}

原图:

填充后:

转自WizardtoH

【转】OpenCV对图片中的RotatedRect进行填充的更多相关文章

  1. 在图片不被裁剪时opencv绕图片中任意点旋转任意角度

    opencv绕图片中任意角度旋转任意角度   最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转任意角度的,都是 ...

  2. OpenCV学习 物体检测 人脸识别 填充颜色

    介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...

  3. zbar+opencv检测图片中的二维码或条形码

    zbar本身自带检测二维码条形码功能,这里使用opencv只是做一些简单的读取图片,灰度图片以及显示条形码和二维码时用到一些绘制 // barcode-qrcodescanner.cpp: 定义控制台 ...

  4. 【python人脸识别】使用opencv识别图片中的人脸

    概述: OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库 为什么有OpenCV? 计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种: 1.研究 ...

  5. opencv python:ROI 与 泛洪填充

    提取ROI区域,处理然后放回去: 泛洪填充 测试代码:显示一张图像,鼠标点击之后,会从该点开始进行填充,显示填充后的结果图像 注:二值图像的填充需要使用选项:cv2.FLOODFILL_MASK_ON ...

  6. Python+OpenCV+图片旋转并用原底色填充新四角

    import cv2 from math import fabs, sin, cos, radians import numpy as np from scipy.stats import mode ...

  7. opencv 检测图片中圆形物体(解决乱线问题)

    2018-03-0418:03:12 整体代码如下: def detect_circle_demo (image): # 降噪处理 dst = cv.pyrMeanShiftFiltering(ima ...

  8. OpenCV探索之路(二十五):制作简易的图像标注小工具

    搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...

  9. OpenCV 学习笔记03 drawContours函数

    opencv-python   4.0.1 轮廓的绘制或填充. cv2.drawContours(image, contours, contourIdx, color[, thickness[, li ...

随机推荐

  1. [SHOI2013]发牌 解题报告

    [SHOI2013]发牌 题意 对一个\(1\sim n(n\le 7\times 10^5)\)的环,指标最开始在\(1\),每次删去顺时针往后第\(d_i\)个元素,指标移到下一个位置.要求输出每 ...

  2. Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate 如果是在配置文件的话那就是dynamic -insert 和 dynamic- ...

  3. 【模板】Tarjan scc缩点

    代码如下 #include <bits/stdc++.h> using namespace std; const int maxv=1e4+10; const int maxe=1e5+1 ...

  4. eclipse如何以指定JDK启动

    eclipse如何以指定JDK启动 2018年01月11日 14:30:23 buerc 阅读数:11179   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csd ...

  5. 求解100以内的所有素数(问题来自PythonTip)

    求解100以内的所有素数 (AC/Submit)Ratio(4615|22542)20.47% 描述: 输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格). a=[2 ...

  6. Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  7. js变量浅谈

    js变量是除了this以外最让人恶心的东西了,还因为烂语法造成各种各样奇奇怪怪的事情发生,下面让我们来谈谈都有什么奇怪的事: 1.用var与不用var function test(){ a = 123 ...

  8. ELK 5.6.8 安装部署

    操作系统版本: LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64: ...

  9. 记录一次iptables端口转发的配置

    需求是公网访问2.2.2.22的80端口,直接转发到内网的192.100.100.178的80端口上. 代理服务器的,两个不同的网卡 eth0 2.2.2.22 eth1 192.100.100.10 ...

  10. python---定义一个session类

    首先:注意cookie中的get_cookie是返回字符串,而get_secure_cookie返回的是字节类型 #self.get_secure_cookie() #The decoded cook ...