IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> C++ OpenCV绘制对称圆点标定图案 -> 正文阅读

[人工智能]C++ OpenCV绘制对称圆点标定图案


通过OpenCV + C++绘制对称型圆点标定图案

原始代码

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;


int main()
{
	// 图像宽高
	int width = 1400;
	int height = 1000;
	
	// 边框大小
	int thicknum = 2;
	// 两个维度的特征圆点数目
	int sqXnum = 14;
	int sqYnum = 10;

	// 根据输入的特征点数目,自适应计算圆点半径大小(此处预设两圆点圆心之间距离为4*半径)
	int radius = min(width / (4 * sqXnum + 2), height / (4 * sqYnum + 2));
	if (radius <= 0.01 * min(height, width)) {
		cout << "警告:圆点过小,可能无法识别!" << endl;
	}
	int space = 4 * radius;
	// 生成两个维度方向上的边缘空白
	int x_st = (width - 2 * radius * (2 * sqXnum - 1)) / 2;
	int y_st = (height - 2 * radius * (2 * sqYnum - 1)) / 2;

	// 生成空白画布
	Mat img(height + 2 * thicknum, width + 2 * thicknum, CV_8UC4, Scalar(255, 255, 255, 255));
	// 生成起始点圆心坐标
	int cir_x = x_st + radius + thicknum;
	int cir_y = y_st + radius + thicknum;
	for (int i = 0; i < img.rows; i++) {
		for (int j = 0; j < img.cols; j++) {
			// 绘制边框
			if (i < thicknum || i >= thicknum + height || j < thicknum || j >= thicknum + width) {
				img.at<Vec<uchar, 4>>(i, j) = Scalar(0, 0, 0, 255);
				continue;
			}
			// 绘制圆点
			if (cir_y >= img.rows - y_st - thicknum) {
				continue;
			}
			if (i == cir_y && j == cir_x) {
				// 绘制圆点,LINE_AA得到的边缘最为光滑
				circle(img, Point(j, i), radius, cv::Scalar(0, 0, 0, 255), -1, LINE_AA);
				cir_x += space;
			}
			if (cir_x >= img.cols - x_st - thicknum) {
				cir_x = x_st + radius + thicknum;
				cir_y += space;
			}
			
		}
	}
	imwrite("dot_calib.png", img);
	imshow("圆点标定图案", img);
	waitKey(0);
	return 0 ;
}

效果图

在这里插入图片描述

参考引用

  1. opencv生成圆形标定版程序
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:05:08  更:2021-08-07 12:07:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:26:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码