图像处理
文章平均质量分 70
luckyone906
这个作者很懒,什么都没留下…
展开
-
成功案例超详细-vs2019 opencv qt创建动态库被C#调用
图像转载 2023-02-16 22:16:10 · 931 阅读 · 1 评论 -
QT-QPainter绘制曲线等基本图形
Qt中绘制2D图形最核心的一个类是QPainter。类QPainter是在设备类QPaintDevice上绘制几何图形(包括直线、曲线、圆形、弧形、矩形等等),其中设备类QPaintDevice的子类又有QWidget、QImage、QPictrue、QPixmap、QOpenGLPaintDevice等,也即是说,我们可以继承这些类,通过重写QPaintEvent事件进行重绘,或者用事件过滤器捕获QPaintEvent事件信息进行响应重绘也行。一、原理讲解本文主要总结用类QPainter绘制直线、矩原创 2022-01-10 23:13:27 · 8094 阅读 · 1 评论 -
Qt中使用OpenGL进行绘图
Qt Creator中的3D绘图及动画教程(参照NeHe)刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用OpenGL进行绘图渲染。虽然里面还是由不少专业的解释照搬原文的,但还是加入了大量自己的分析。而且Qt中写OpenGL框架上比VC简单太多了,有不少东西都封装优化好了,代码上还是由有很多区别的。当然,其中原教程没解释好的问题我都作了深入的解释,以及一些多余部分解释、代码都被我删掉简化了。这份Qt OpenGL的3原创 2021-03-15 18:54:58 · 3157 阅读 · 0 评论 -
Qt调用OpenCV汇总(1)
//*************************************************************************************************************1在Qt Creator上新建一个项目。右键新项目>>添加库…>>外部库>>选中库文件路径>>下一步,完成,添加到.pro文件中。然后再在pro文件中手动输入下面代码:INCLUDEPATH += D:\opencv\bui原创 2020-12-25 22:19:30 · 4117 阅读 · 0 评论 -
C#图片保存与读取,以及图片另存操作
照片的保存与读取 /// <summary> /// 图片转二进制 /// </summary> /// <param name="imgPhoto">图片对象</param> /// <returns>二进制</returns> public static byte[] PhotoImageInsert(System.Drawing.Im原创 2020-12-25 22:07:34 · 12995 阅读 · 2 评论 -
C#完美实现透明窗体的绘制效果
为了实现透明窗体的绘制,最开始是采用了双层窗体的模式。思路:将form1的属性transparencyKey设置为背景色,将form2的opicaty设置的很低,比如0.05,保证鼠标不会穿透!让后将使用form1创建的绘制对象(form1.CreateGraphics),去绘制即可!后面方面使用单层窗体也可实现透明绘制,主要是设置窗体背景色需要注意!在设置背景色的后,颜色的R值不能等于B值,这样就可事件即透明又不会鼠标穿透的效果!例如这样设置:this.BackColor = Color.原创 2020-06-14 20:25:24 · 1535 阅读 · 0 评论 -
c#获取控件指定坐标的像素值
[DllImport("gdi32.dll")] private static extern uint GetPixel(IntPtr hDC, int XPos, int YPos); Graphics g = control.CreateGraphics(); uint colorref = GetPixel(g.GetHdc(), center.X + convolution[i, j].X, center.Y + convolution.原创 2020-06-14 20:22:15 · 1479 阅读 · 0 评论 -
C# 中Bitmap图像处理含增强对比度的三种方法
Bitmap类Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下:1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色.2. PixelFormat属性:返回图像的像素格式.3. Palette属性:获取和设置图像所使用的颜色调色板.4. Height Width属性:返回图像的高度和宽度.5. LockBits方法和UnlockBits方法:分别锁原创 2020-06-14 20:18:30 · 1230 阅读 · 0 评论 -
c#中实现图像图像卷积与滤波-高斯平滑
使用C#语言编写高斯平滑。一、线性滤波与卷积的基本概念2D卷积需要4个嵌套循环4-double loop,所以它并不快,除非我们使用很小的卷积核。这里一般使用3×3或者5×5。而且,对于滤波器,也有一定的规则要求:1)滤波器的大小应该是奇数,这样它才有一个中心,例如3×3,5×5或者7×7。有中心了,也有了半径的称呼,例如5×5大小的核的半径就是2。2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。3)如果滤波器矩阵所有元素之和大于原创 2020-06-14 20:16:28 · 1959 阅读 · 0 评论 -
OpenCV积分图函数:integral ()详解
/**************************************************************************************************/// 函数名称:OnMenu020503()// 函数功能:“对角积分图”菜单。// 函数参数:// 输入参数: 无// 输出参数: 无// 返 回 值:void...原创 2020-04-28 21:02:30 · 4188 阅读 · 0 评论 -
opencv中查看mat位图的像素幅度(Cv::matStep)
OpenCV__cv::Mat::stepstep[0]是矩阵中一行元素的字节数 step[1]是矩阵中一个元素的字节数(elemSize) step1 = step / elemSize1,elemSize1是元素的每个通道所占的字节数 step1(0)是矩阵一行元素的通道数(不是很贴切) step1(1)是矩阵一个元素的通道数(channel()) 示例 Mat ...原创 2020-03-09 12:30:13 · 1373 阅读 · 0 评论 -
c#图像灰度化、灰度反转、二值化
图像灰度化:将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一...原创 2020-03-09 11:45:26 · 2519 阅读 · 1 评论 -
c# Bitmap byte[] Stream 文件相互转换
//byte[] 转图片 public static Bitmap BytesToBitmap(byte[] Bytes) { MemoryStream stream = null; try { stream = new MemoryStream(Bytes); return new Bitmap((Image)new Bi...原创 2020-03-04 18:59:15 · 1156 阅读 · 0 评论 -
C#无损高质量压缩图片实现代码
最近,项目上涉及到了图像压缩,发现原有的图像压缩功能,虽然保证了图像的大小300K以内,但是压缩后的图像看的不在清晰,并且,限定了图片的Height或者是Width。在CSDN上看到了一个压缩算法:C#无损高质量压缩图片代码进过测试这个算法,发现,将原始图像的大小进行对半处理,然后迭代跳转压缩质量参数,可以得到不错的效果。修改后的算法如下:? 1 2 3...原创 2020-03-04 18:21:23 · 4177 阅读 · 0 评论 -
图片与Byte相互转换,文件和字节流的转换方法
/// <summary>/// 文件转化成byte[]数组/// </summary>/// <param name="fileName"></param>/// <returns></returns>private byte[] Fi...原创 2020-03-02 10:33:24 · 1029 阅读 · 0 评论 -
傅里叶变换和逆傅里叶变换numpy
理论基础时域:以时间为横坐标频域:以频率的倒数为横坐标,可以看出,频域更加简单。相位:与时间差有关的一个概念。傅里叶说,任何连续周期信号,可以由一组适当的正弦曲线组合而成。我们知道,正弦曲线可以转换为频域信号,所以:任何连续周期信号,都可以转换成频域信号。并且这个过程是可逆的。程序实现1. 傅里叶变换numpy.fft.fft21实现傅里叶变换。返回一个复数数组。...原创 2020-02-20 16:20:37 · 5321 阅读 · 0 评论 -
二维傅里叶变换是怎么进行的?
1.首先回顾一下一维FT通俗来讲,一维傅里叶变换是将一个一维的信号分解成若干个三角波。对于一个三角波而言,需要三个参数来确定它:频率,幅度 A ,相位。因此在频域中,一维坐标代表频率,而每个坐标对应的函数值也就是是一个复数,其中它的幅度就是这个频率三角波的幅度 A ,相位就是。下图右侧展现的只是幅度图,在信号处理中用到更多的也是幅度图。2.类比:从一维到二维一维信号是一个序列...原创 2020-02-20 16:16:24 · 5357 阅读 · 1 评论 -
opencv学 之图像傅里叶变换dft
一、前言接触了图像的傅里叶变换,数学原理依旧不是很懂,因此不敢在这里妄言。下午用Opencv代码实现了这一变换,有一些经验心得二、关键函数解析2.1copyMakeBorder() 扩展图片尺寸傅里叶变换的计算对图像的尺寸有一定要求,尺寸不满足要求的,可用copyMakeBorder() 函数进行扩展。函数定义如下:void copyMakeBorder(InputArray...原创 2020-02-19 20:05:39 · 2321 阅读 · 0 评论 -
图像处理的傅里叶变换理解
傅立叶变换在图像处理中有非常非常的作用。因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法,比如离散余弦变换,gabor与小波在图像处理中也有重要的分量。印象中,傅立叶变换在图像处理以下几个话题都有重要作用:1.图像增强与图像去噪绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频——噪声;边缘也是图像的高频分量,可以通过添加高频分量来增强原始图像的边缘;2.图像分割之边...原创 2020-02-11 18:56:47 · 4296 阅读 · 0 评论 -
理解图像的傅里叶变换
最近在看图像的傅里叶变换,看着频谱图一直没看明白到底为啥是那样的,跟同学研究了好久,终于想明白了。感谢同学的耐心指导!大家相互讨论真的很快就能出结果,多讨论,多学习。图像的傅里叶变换图像是一个二维的信号,所以对它进行二维的傅里叶变换,对于MXN的一幅图像的离散二维傅里叶变换,公式如下:从公式上可以看出,F(u,v)与f(x,y)与并不是一一对应的关系,F(u,v)所对应的不是某...原创 2020-02-11 16:37:31 · 1811 阅读 · 0 评论 -
理解图像傅里叶变换的频谱图
很多人都不了解图像(二维)频谱中的每一点究竟代表了什么,有什么意义?一句话解释为: 二维频谱中的每一个点都是一个与之一 一对应的二维正弦/余弦波。视觉的优势永远大于其他器官对人的作用,所以对标眼睛的图像处理起到了非常重要的作用。相比于时域分析图像的艰难,在频域分析图像就变得无比轻松,但是由于频域比较抽象,理解起来比较吃力,所以很多人并不能一下子就明白其原理。在此选用了著名的C...转载 2020-02-11 16:29:10 · 14563 阅读 · 1 评论 -
图像灰度图,直方图,像素通道问题
1.图像直方图概述 直方图广泛运用于很多计算机视觉运用当中,通过标记帧与帧之间显著的边缘和颜色的统计变化,来检测视频中场景的变化。在每个兴趣点设置一个有相近特征的直方图所构成 “标签”,用以确定图像中的兴趣点。边缘、色彩、角度等直方图构成了可以被传递给目标识别分类器的一个通用特征类型。色彩和边缘的直方图序列还可以用来识别网络视频是否被复制。 其实,简单来说,直方图就是对数据进行统计的一种...原创 2020-02-11 14:03:35 · 2992 阅读 · 0 评论 -
图像的色彩类别,灰度化,二值化
灰度化:在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。一般常用的是加权平均法来获取每个像素点的灰度值。二值化:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果在图像处理中,用RGB三个分量(R:Red,...原创 2020-01-22 15:39:58 · 3487 阅读 · 2 评论 -
C++的Opencv动态库遇到的问题
1.c#中的位图传入时注意bitmapdata的 stride这个参数,步幅,图像宽度*通道数,必须是整4的倍数貌似,待确定。2.某个对象正在在使用的异常,用lock锁锁住共享资源。3.无法加载dll,找不到指定的模块,可能有几种原因,如系统或exe缺少一些依赖的dll,还有就是编译位数不对,或dll路径不对。4.c#手动分配的内存,...原创 2020-01-09 21:46:30 · 339 阅读 · 0 评论 -
遍历opencv中的mat像素的几种方法和概念
今天在看矩形滤波的时候忽然脑子短路,把一些概念全弄混了,现总结一下,以便下次再混的时候可以参考确认下,自己的理解,有错的地方还请指正。首先,在Opencv2中基本上都是用的Mat来表示图像了,C++的函数调用中基本上也都是Mat图,从根本上说,一张图像是一个由数值组成的矩阵,矩阵的每一个元素代表一个像素。对于灰度图像而言,像素有8位无符号数表示,其中0代表黑色,255代表白色...原创 2020-01-07 21:36:37 · 2566 阅读 · 0 评论 -
一种新的图像清晰度评价函数
自动聚焦是机器人视觉、数字视频系统中的关键技术之--,是决定图像质量的重要因素,是获取清晰图像的第1步。聚焦性能取决于调焦评价函数的准确性和有效性,即评价函数必须具有无偏性好、单峰性强和较好的抗噪性能。图像模糊的本质是高频分量的损失,聚焦图像比离焦图像包含更多的信息和细节,这是设计聚焦评价函数的基础。该文采用基于聚焦窗口模式的平方梯度函数作为聚焦评价函数,判断图像是否清晰。通过...原创 2020-01-06 22:29:00 · 861 阅读 · 0 评论 -
11种图像清晰度评价函数
典型无参考图像清晰度评价(可用作对焦评价函数)Tenengrad评价函数Tenengrad函数是一种由Tenenbaum提出的,基于梯度的常用图像清晰度评价函数。特南梯度。在图像处理中,一般认为对焦好的图像具有更尖锐的边缘,故具有更大的梯度函数值。Tenengrad函数使用Sobel算子提取水平和垂直方向的梯度值,求其平方和作为评价函数。具体过程如下:设Sobel卷积核为,则图...原创 2020-01-06 21:58:09 · 15378 阅读 · 3 评论 -
一种新的图像清晰度评价函数,数字图像清晰度评价函数的研究与改进
摘要:摘 要: 通过分析常见的图像清晰度评价函数,针对自动对焦系统中图像清晰度评价问题,提出了一种基于聚焦窗口的改进梯度评价函数算法。改进后的算法具有计算量小、实时性好、评价曲线单峰性好、灵敏度高、聚焦检测效率高等特点,可以更好地满足自动对焦系统对图像清晰度评价的要求。 关键词: 图像清晰度;自动聚焦;评价函数 图像清晰度评价在图像分析和识别中具有重要的意义。数字图像评价函数是评价数摘...转载 2020-01-06 21:30:10 · 3131 阅读 · 1 评论 -
opencv系列-图像清晰度评价
opencv系列-图像清晰度评价1,换了opencv3.4,用来测试2,opencv好评呀图像清晰度评价算法有很多种,在空域中,主要思路是考察图像的领域对比度,即相邻像素间的灰度特征的梯度差;在频域中,主要思路是考察图像的频率分量,对焦清晰的图像高频分量较多,对焦模糊的图像低频分量较多。这里实现3种清晰度评价方法,分别是Tenengrad梯度方法、Laplacian梯度...原创 2020-01-06 21:08:42 · 878 阅读 · 1 评论 -
图像清晰度评价15种方法对比
在无参考图像的质量评价中,图像的清晰度是衡量图像质量优劣的重要指标,它能够较好的与人的主观感受相对应,图像的清晰度不高表现出图像的模糊。本文针对无参考图像质量评价应用,对目前几种较为常用的、具有代表性清晰度算法进行讨论分析,为实际应用中选择清晰度算法提供依据。(1)Brenner 梯度函数Brenner梯度函数是最简单的梯度评价函数,它只是简单的计算相邻两个像素灰度差的平方,...转载 2020-01-06 21:05:17 · 16033 阅读 · 3 评论 -
OpenCV 图像清晰度评价算法(相机自动对焦)
相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上。这时候物体的成像比较清晰,图像细节信息丰富。相机自动对焦的过程,其实就是对成像清晰度评价的过程,对焦不准确,拍摄出来的图像清晰度低,视觉效果模糊,如果是在工业检测测量领域,对焦不准导致的后果可能是致命的;对焦准确的图像清晰度较高,层次鲜明,对比...原创 2020-01-06 21:00:02 · 6960 阅读 · 0 评论 -
OpenCV图像锐化/增强
OpenCV图像锐化/增强0.综述1.Laplacian高通滤波算子2.Laplacian锐化代码实践3.USM锐化增强算法4.USM代码实践0.综述图像的卷积计算除了可以完成我们前面介绍的模糊去噪、边缘检测等任务外,还可以实现图像锐化/增强的功能。图像锐化是一种突出和加强图像中景物的边缘和轮廓的技术。在图像中,边缘可以看作是位于一阶导数较大的像素位置,因此可以通过求图像的一阶导...原创 2020-01-06 20:52:45 · 6721 阅读 · 1 评论 -
c#和c++的opencv位图数据参数互换问题解决方法
1.******************************C#调用vc++ dll 传递参数的问题(Bitmap 转换为 opencv mat ),保存后图片不一样。vc++ 代码bool Recognize(Point_2F *arr,uchar* b){Mat src=cv::Mat(415,770,CV_8UC3,b);/*for (int i=0;i<s...原创 2020-01-05 11:08:34 · 1425 阅读 · 1 评论 -
c#调用c++(Opencv)dll的实例
*****************************************c++代码MYDLL int GetCenterPos(uchar* imageData,int step, int widthValue, int heightValue, int BinaryThreshold, int LineBlankThreshold, int* centerX, int* cente...原创 2020-01-05 11:00:08 · 1065 阅读 · 0 评论 -
C#调用C++(opencv)中图片数据传递的问题
C++DLL代码:C#代码:课题需要做一个界面,因为某些原因不能用emgucv,需要在C#winform中调用opencv的方法,用opencv处理图片之后再传回到C#pictureBox控件中显示出来。从C#向C++传递图片参数,处理后的图片能在C++中imshow出来,但是不知道怎么从C++往C#穿回去,应该是需要穿指针地址回去,但是还不知道怎么传?...原创 2020-01-04 19:13:31 · 2969 阅读 · 3 评论 -
C#对比图片相似度算法
参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹越相似, 说明两张图片就越相似. 但关键是如何根据图片计算出"指纹"呢? 下面用最简单的步骤来说明一下原理:第一步 缩小图片尺寸 将图片缩小到8x8的尺寸, 总共64个像...原创 2020-01-01 21:51:30 · 5832 阅读 · 2 评论