
opencv
文章平均质量分 69
数据库内核
这个作者很懒,什么都没留下…
展开
-
vs2019+Qt 使用 Qlabel 在界面上显示图像及显示失真问题
(1)data 直接使用 Mat 类型的 data 即可,如:image.data;(2)width 表示图像的宽,即图像的列;(3)height表示高,即图像的宽;(4)bytesPerline 表示每行拥有的字节数(如果没有该参数则默认按照 4 字节对齐的方式显示,见另个构造函数);(5)format 表示图片格式,彩色图一般采用Format_RGB888,灰度图则使用Format_indexed8;注意:bytesPerline 参数如果设置不当可能会导致图片显示失真,见下图;图 1 原图。原创 2022-12-01 17:16:27 · 2371 阅读 · 0 评论 -
【影像配准】目标影像在参考影像中的自动定位与裁剪(附有完整代码)
在影像配准时通常要求输入的参考影像和待配准影像是同一地区且尺寸相等,但是在实际应用时如果要求输入的参考影像和待配准影像是同一地区且尺寸相等的话,则需人工手动裁剪,无形中增加了工作量!!!所以在配准前需要增加一个自动裁剪功能,即输入的参考影像很大,然后根据输入的待配准影像从参考影像中裁剪出目标区域,然后进行配准!!!1、获取待配准影像的左上角投影坐标和右下角投影坐标;2、该投影坐标即为参考影像中相应区域的左上角投影坐标和右下角投影坐标;3、把投影坐标转化为像素坐标;4、利用gdal从原参考影像中裁剪出目标区域原创 2022-06-07 22:20:20 · 736 阅读 · 0 评论 -
Opencv获取图像像素值数据类型
不同的图像有不同的像素类型,不过对于不同的像素类型,需要在模板参数传入不同的值。首先像素的数据类型包括CV_32U,CV_32S,CV_32F,CV_8U,CV_8UC3等,那这些类型都是什么含义呢。第一个数字表示比特数,第二个数字就表示C++中数据类型,如果还有后面两个字符,这两个字符表示通道数。例如对于CV_32U,表示具有32比特的unsigned int类型;对于CV_8UC3,表示具有8比特,并且有三个通道的unsigned char类型。对于这个类型,可以使用type()来获取。 根转载 2022-05-30 15:50:04 · 3277 阅读 · 0 评论 -
栅格数据矢量化(附有完整代码)
栅格一矢量数据转换是数据转换的一种方法,即矢量与栅格两种数据形式之间的转换技术。空间数据表示的两种方法各有优缺点和适用场合,因此需要根据使用目的进行栅格一矢量数据的转换.由矢量数据向栅格数据的转换一般比较方便.对于点、线目标,由其所在的栅格行、列数表示,对于面状目标,则需判定落人该面积内的像元.通常栅格(像元)尺寸均大于原来坐标表示的分辨率,所以若将栅格化数据再反转回去,则不可能达到原来矢量数据的精度.将矢量数据转化为栅格数据,主要用于空间分析、多边形叠置等.栅格数据...原创 2022-01-10 16:01:55 · 11312 阅读 · 18 评论 -
二值图细化算法 查表法+ZS算法 (附有完整代码)
1、细化简介图像的细化主要是针对二值图而言。所谓细化,也就是从原来的图中去掉一些点,但仍要保持原来的形状,实际上是保持原图的骨架,将其细化为一个像素宽的线条的处理过程。图像细化的算法有很多种,具体可以分为迭代法和非迭代法,迭代法根据其运算时是否并行处理像素,又分为串行算法和并行算法。在并行算法中,像素点的删除与图像中像素值的顺序无关,而仅仅取决于上一次迭代的结果,串行算法中,是否删除像素不仅与上一次迭代的结果有关,而且与当前像素值的分布也有关系。目前,比较典型的算法又......原创 2022-01-03 18:11:05 · 5285 阅读 · 11 评论 -
【c++】Opencv Mat类详解
1. Mat类常用成员函数和成员变量由于 Mat 类使用的非常广泛,使用的形式也非常之多,这里只对较为常用的成员函数和成员变量做出了整理;1.1 构造函数(1)默认构造函数cv::Mat::Mat()默认构造函数:生成一个矩阵并由OpenCV提供的函数(一般是Mat::create() 和 cv::imread() )来分配储存空间。Mat类可以分为两个部分:矩阵头和指向像素数据的矩阵指针矩阵头:包括数字图像的矩阵尺寸、存储方法、存储地址和引用次数等,矩阵头的大...转载 2021-08-31 18:48:20 · 7905 阅读 · 0 评论 -
_Tp& Mat::at(int i0, int i1) 之执行出错总结
1._Tp& Mat::at(int i0, int i1) 介绍template<typename _Tp> inline_Tp& Mat::at(int i0, int i1){ CV_DbgAssert(dims <= 2); //1.如果维度越界 CV_DbgAssert(data); //2.如果数据为空 //3.如果i0越界 CV_DbgAssert((unsigned)i0 &翻译 2021-09-22 17:19:16 · 771 阅读 · 1 评论 -
【C++】删除矩阵中的指定列(非常实用)
(1)删除矩阵中的指定列——删除某一列/*******************删除矩阵中指定的列************************/void delete_col(Mat& arr, int num){ if (num < 0 || num >= arr.cols) { cout << " 所删除的列索引不合法! " << endl; } else { //删除列是矩阵的最后一列 if (num == arr.co.原创 2021-08-31 17:33:38 · 2932 阅读 · 0 评论