oepncv 图像矫正

2024-04-03 10:44
文章标签 图像 矫正 oepncv

本文主要是介绍oepncv 图像矫正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//图像定位矫正
bool ImageLocal(cv::Mat srcImg, cv::Mat& warpImg, Point2f SrcAffinePts[])
{Mat grayImg;if (srcImg.channels() != 1){cvtColor(srcImg, grayImg, COLOR_BGR2GRAY);}else{grayImg = srcImg.clone();}Mat blurImg;medianBlur(grayImg, blurImg, 5);Mat binImg;threshold(blurImg, binImg, 10, 255, THRESH_BINARY);//namedWindow("binImg", WINDOW_NORMAL);//imshow("binImg", binImg);vector<vector<Point>>contours;findContours(binImg, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);RotatedRect bRect;for (int cnt = 0; cnt < contours.size(); cnt++){double area = contourArea(contours[cnt]);if (area > 1000){bRect = minAreaRect(contours[cnt]);}}if (bRect.size.empty())return false;//如果没有找到最小外接矩形,返回false//找到最小外接矩形四个顶点Point2f srcPoints[4];bRect.points(srcPoints);//for (int i = 0; i < 4; i++)//{//	line(srcImg, srcPoints[i], srcPoints[(i + 1) % 4], Scalar(0, 255, 0), 3);//}//将四个点按照左上、右上、右下、左下进行区分int TL, TR, BR, BL;double addmax = 0.0, addmin = 999.9, submax = 0.0, submin = 999.9;for (int i = 0; i < 4; i++){double addval = srcPoints[i].x + srcPoints[i].y;double subval = srcPoints[i].x - srcPoints[i].y;if (addval > addmax){addmax = addval;BR = i;}if (addval < addmin){addmin = addval;TL = i;}if (subval > submax){submax = subval;TR = i;}if (subval < submin){submin = subval;BL = i;}}double LeftHeight = EuDis(srcPoints[TL], srcPoints[BL]);double RightHeight = EuDis(srcPoints[TR], srcPoints[BR]);double MaxHeight = max(LeftHeight, RightHeight);double UpWidth = EuDis(srcPoints[TL], srcPoints[TR]);double DownWidth = EuDis(srcPoints[BL], srcPoints[BR]);double MaxWidth = max(UpWidth, DownWidth);//这里使用的顺序是左上、右上、右下、左下顺时针顺序。SrcAffinePts、DstAffinePts要一一对应SrcAffinePts[0] = Point2f(srcPoints[TL]);SrcAffinePts[1] = Point2f(srcPoints[TR]);SrcAffinePts[2] = Point2f(srcPoints[BR]);SrcAffinePts[3] = Point2f(srcPoints[BL]);Point2f DstAffinePts[4] = { Point2f(0,0),Point2f(MaxWidth,0),Point2f(MaxWidth,MaxHeight),Point2f(0,MaxHeight) };Mat M = getPerspectiveTransform(SrcAffinePts, DstAffinePts);warpPerspective(srcImg, warpImg, M, Size(MaxWidth, MaxHeight), 1, 0, Scalar::all(0));return true;
}

这篇关于oepncv 图像矫正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872699

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

Winfrom中解决图像、文字模糊的方法

1.添加清单 2.将清单中的下面内容取消注释

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。

Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值 图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3), jpg、png图像格式 jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数 png图像的灰度值范

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构