
图像处理
小米的修行之路
是日已过,命亦随减;如少水鱼,斯有何乐?当勤精进,如救头燃!但念无常,慎勿放逸。
展开
-
opencv实现图像的旋转和镜像操作
1、图像的镜像操作使用函数:flip()来实现:我们使用flip函数的第三个参数来控制镜像操作,>0 左右镜像, =0 上下镜像,<0左右上下镜像//上下左右镜像 Mat dst;flip(src, dst, -1);//上下镜像Mat dst;flip(src, dst, 0);//左右镜像Mat dst;flip(src, dst, 1);2、旋转操作,使用转置+镜像配合完成:transpose + flip://顺时针旋转90度Mat ds.原创 2021-10-31 11:17:00 · 4242 阅读 · 0 评论 -
vs2017编译32位的opencv4.3.0动态库详解
1、下载opencv4.3.0源码:https://download.youkuaiyun.com/download/u012372584/123280462、下载CMake编译工具:https://cmake.org/download/3、解压下载的源码,我的解压目录:E:\opencv-4.3.0。新建一个文件夹,用来存放编译后的文件:E:\build_opencv4.3.0_32。4、添加源...原创 2020-04-15 11:49:58 · 3761 阅读 · 8 评论 -
放大/缩小内存中的图像
/* 功能:放大/缩小图像,只放大高度,宽度不变 参数:1、input:pSrcData 内存中的原始图像数据 2、input:nSrcLines 原始图像的高度 3、output:pDstData 存放放大后图像数据的内存首地址 4、input:nDstLines 放大后目标图像的高度 5、input:nImageW...原创 2020-04-12 20:22:44 · 261 阅读 · 0 评论 -
opencv---绘图操作
#include "stdafx.h"#include <opencv.hpp>using namespace cv;#define WINDOW_WIDTH 600void DrawEllipse(Mat img, double angle);//绘制椭圆void DrawCircle(Mat img,Point center); //绘制圆void DrawPol...原创 2019-04-16 10:11:39 · 366 阅读 · 0 评论 -
opencv---鼠标操作
// MouseOperate.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <opencv.hpp>using namespace cv;#define WINDOW_NAME "绘图窗口"void on_MouseHandle(int event, int x, int y, int flags, void*...原创 2019-04-15 15:48:24 · 320 阅读 · 0 评论 -
opencv---创建窗口滑动条
#include "stdafx.h"#include <opencv.hpp>using namespace cv;#define WINDOW_NAME "线性混合示例"const int g_nMaxAlphaValue = 100;double g_dAlphaValue;double g_dBetaValue;Mat g_src1;Mat g_src2;...原创 2019-04-12 13:30:02 · 746 阅读 · 0 评论 -
opencv---图像融合
1、g(x) = (1 - a)f(x) + a k(x);2、要求两张图片的行数、列数、类型一致;#include "stdafx.h"#include <opencv.hpp>#include <iostream>using namespace cv;using namespace std;int _tmain(int argc, _TCHAR*...原创 2019-04-11 16:46:19 · 197 阅读 · 0 评论 -
opencv---操作图像像素
#include <opencv.hpp>using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat src; src = imread("lenna.bmp", IMREAD_UNCHANGED); if (src.empty()) { printf("Load Image Failed.");...原创 2019-04-10 13:23:29 · 235 阅读 · 0 评论 -
opencv---图像的掩模操作
#include "stdafx.h"#include <opencv.hpp>using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat src = imread("1.jpg", IMREAD_UNCHANGED); if (src.empty()) { printf("Load src Imag...原创 2019-04-09 18:08:15 · 932 阅读 · 0 评论 -
opencv---读取、转换、保存图像
int _tmain(int argc, _TCHAR* argv[]){ Mat image,dst; image = imread( "6-238.jpg", IMREAD_UNCHANGED); if ( !image.data ) { printf("No image data \n"); return -1; } namedWindow("Display Ima...原创 2019-04-09 16:04:48 · 414 阅读 · 0 评论 -
在vs工程中使用.h/.lib/.dll配置opencv环境
1、首先下载配置环境所需的.h、.lib、.dll文件,这些文件在安装opencv exe的时候都会生成的,这里我已经准备好了,下载地址:https://download.youkuaiyun.com/download/u012372584/109700692. 环境配置,目录根据自身设定(1)附加包含目录:.\opencv\include.\opencv\include\opencv....原创 2019-02-25 10:14:15 · 468 阅读 · 0 评论 -
opencv---增加图片亮度和对比度
1、原理:g(i,j) = af(i,j) + b; a > 0;b是增益变量.2、#include "stdafx.h"#include <opencv.hpp>using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat src = imread("lenna.bmp",IMREAD_UNC...原创 2019-04-12 09:56:07 · 2118 阅读 · 0 评论 -
图像算法在DSP嵌入式移植中常用的优化方法
以上内容来源于大嘴说图像微博:”大嘴说图像微博入口地址“今天大嘴主要介绍一下这些年来本人在做图像算法的嵌入式移植时常采用的优化方法,由于篇幅和时间有限,这里主要列出一个大框,具体的如果大家有兴趣可以慢慢与大嘴交流。一. 前序1. 图像算法在嵌入式移植时(主要针对DSP芯片)优化的原则和步骤?原则:算法效果达到预期之前最好不要做过多的优化步骤:windows下的算法级优化—...转载 2014-01-16 21:44:25 · 1904 阅读 · 0 评论 -
向量相似度匹配之豪氏距离
以下内容转自大嘴说图像的微博“大嘴说图像微博入口地址”今天大嘴说说向量相似度匹配的另一个重要的举例:豪氏(Hausdorff)距离经典定义:Hausdorff 距离是描述两组点集(两个向量)之间相似程度的一种量度,它是两个点集之间距离的一种定义形式:假设有两组集合A={a1,…,ap},B= {b1,…,bq},则这两个点集合之间的Hausdorff 距离定义为:H(A...转载 2014-01-16 21:38:55 · 2770 阅读 · 0 评论 -
opencv---感兴趣区域(ROI)
#include "stdafx.h"#include <opencv.hpp>using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat srcImage1 = imread("pens.bmp",IMREAD_UNCHANGED); if (!srcImage1.data) { printf("L...原创 2019-04-16 15:04:47 · 474 阅读 · 0 评论 -
opencv---颜色通道分离、合并
#include "stdafx.h"#include <opencv.hpp>using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat srcImage; srcImage = imread("yacht.bmp",IMREAD_UNCHANGED); if (!srcImage.data) { ...原创 2019-04-16 17:19:26 · 619 阅读 · 0 评论 -
opencv---掩模Mask
1、作用:裁剪图像中任意形状区域。2、测试:#include "stdafx.h"#include <opencv.hpp>using namespace cv;int _tmain(int argc, _TCHAR* argv[]){ Mat srcImage,Mask; //加载原始图像 srcImage = imread("sailboat.bmp",...原创 2019-04-18 09:18:49 · 706 阅读 · 0 评论 -
图像增强
1.图像增强的原因:图像在传输或者处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特征,给分析带来了困难。2.图像增强的定义:图像增强是对图像进行加工,以得到对具体应用中视觉效果更“好”,或更“有用”的图像处理技术。3.图像增强的目的:(1)改善图像的视觉效果,提高图像的清晰度; (2)将图像转换成一种更适合于人或机器分析处理的形式。4.图像增强的方法:(1)空域法:...原创 2014-01-12 20:28:12 · 2302 阅读 · 0 评论 -
直方图的均衡化
直方图是像素数统计图,如设一张灰度图或一个通道,值是0~255。直方图如果按255个区分的话,统计出来的就是值为为0的有几个像素数,值为1的有机个像素数,这样的一张表。那么均衡化的意思就是,这样表要均衡,不至于值为0的有上万个像数,值为1的只有1 个。直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的...原创 2014-01-11 21:42:51 · 1205 阅读 · 0 评论 -
直方图匹配(规定化)
1.直方图规定化(直方图匹配)是将变换过程加以控制,能够修正直方图的形状,或得到具有指定直方图的输出图像。有选择地增强某个灰度范围内的对比度或使图像灰度值满足某种特定的分布。2.直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像(待匹配直方图的图像)之间的关系,使原始图像的直方图匹配特定的形状,弥补直方图均衡化不具备交互作用的特性。 ...原创 2014-01-13 21:12:17 · 6681 阅读 · 0 评论 -
直方图的反向投影
学习Opencv中说: 反向投影是一种记录像素点或是像素块如何适应直方图模型中分布的方式。例如,我们有一个颜色直方图,可以利用反向投影在图像中找到该区域(刚开始学不大理解)。Opencv中文网站这样说: (1)反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式。 (2)简单的讲,所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的...原创 2014-01-15 11:22:16 · 1838 阅读 · 0 评论 -
直方图反向投影的作用
我们先通过一幅图来理解反向投影:图片来源点击打开链接这副图的箭头表示了反向投影过程:直方图—>反向投影图像。反向投影的作用是什么呢?Opencv中文网站这样说:所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。更通俗一点,反向投影可以通过颜色直方图来理解,我们检测图像中某个像素点的颜色是否位于直方图中,如果位于则将颜色加亮,通过对图像的...原创 2014-01-16 20:07:32 · 4768 阅读 · 0 评论 -
模版匹配
所谓模板匹配是一种用于在源图像I中寻找并且定位给定的目标图像T(即模板图像)的技术,在输入源图像Source image(I)中滑动目标图像T,寻找各个位置与模板图像Template image(T)的相似度,并将结果保存在结果矩阵result matrix(R)中。该矩阵的每一个点的亮度表示与模板T的匹配程度。 两个图像块之间的相似度可以通过一些相似度准则来衡量:...原创 2014-02-18 19:53:47 · 1074 阅读 · 0 评论 -
OpenCv中IplImage图像格式与BYTE图像数据的转换
IplImage* iplImage;BYTE* data;1)由IplImage*得到BYTE*图像数据:data = iplImage->imageDataOrigin; //未对齐的原始图像数据或者data = iplImage->imageData; //已对齐的图像数据2) 由BYTE*得到IplImage*图像数据iplImage转载 2016-10-17 10:03:25 · 1035 阅读 · 0 评论 -
libjpeg实现内存内位图的压缩及解压缩
相信使用过的朋友应该会喜欢上libjpeg,它简单易用、压缩质量可以随意控制、并且稳定性很好,但是,官方网站给提供的libjpeg库,不论是进行压缩时还是解压缩时,都需要用到FILE,使得我们如果想在内存中直接压缩或解压缩图像还要自己实现相应的结构,总之,比较麻烦,尤其对初学者,更是不知从何处入手,幸运的是,libjpeg给我们提供了源代码,今天我就为大家介绍,怎样修改源代码,使lib转载 2016-10-20 17:23:23 · 2256 阅读 · 0 评论 -
C++实现图像的各种旋转操作
说明:Buffer中存放的是要进行旋转的原始图像,m_pImage中存放转换后的图像数据。 nHeight是图像的高度,我测试图像是1024;nWidth是图像的宽度,我测试图像是1400 nImageSize = nHeight*nWidth;unsigned char *m_pImage= new unsigned char[nIamgeSize]; Zero原创 2017-06-23 16:03:14 · 11261 阅读 · 3 评论 -
读取BMP文件并显示出来(C++实现)
原文地址:点击打开链接读取BMP文件的时候我们首先需要弄清楚bmp格式文件的结构 bmp的文件格式 bmp文件包含在windows.h的头文件里。编写代码的时候可以直接调用Windows.h 头文件来调用。 实现代码#include#include#include#include#include#include#includeusing names转载 2017-11-14 16:39:09 · 3428 阅读 · 0 评论 -
Windows下BMP图像一行像素所占的字节数是4的倍数
位图操作函数WIDTHBYTES一、定义#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4);计算图像每行象素所占的字节数目,设置成4的整数倍//=(((bits) + 31) / 8)//=((( biWidth* biBitCount) + 31) / 8) 二、参数说明:bits:一个btmap中一行像素的位数总和...转载 2018-11-27 08:59:12 · 3926 阅读 · 0 评论 -
仿射变换
仿射几何就是把欧几里得几何学中的长度、面积、和角度测量都去掉以后剩下的东西,但是平行的概念和直线上点的比例仍然保留。两个仿射空间的X和Y之间的仿射变换是X和Y之间的双射,把m维的子空间映射为m维的子空间,把平行的子空间映射为平行的子空间,并保持等价的仿射坐标不变。判断一个变换是否是仿射变换也可以使用它所具有的把直线映射到直线且不改变平行线段之间带符号长度比例关系的性质决定。仿射变换(Affine ...原创 2014-01-12 13:50:02 · 7461 阅读 · 0 评论