
【OpenCV/Python】
文章平均质量分 76
松子茶
关注数字图像处理,数据隐藏与信息隐藏,计算机视觉和机器学习...(欢迎关注微信公众号ID:songzitea)
展开
-
showManyImage
/************************************************************************* Copyright(c) 2012 Gavin Liu* All rights reserved.** File: showManyImage.cpp* Brief: * Version: 1.0* Author: Gavin Liu原创 2016-08-14 14:22:04 · 1158 阅读 · 0 评论 -
Python的列表与元组
列表和元组的主要区别在于,列表可以修改,元组则不能。>>> edward = ['EdWAARD UTIMES', 50]>>> john = ['John Smith', 30]>>> database =[edward,john]>>> database[['EdWAARD UTIMES', 50], ['John Smith', 30]]原创 2013-07-12 23:03:13 · 1978 阅读 · 0 评论 -
获取图像感兴趣地矩形区域实现
虽然在开发APP中,鼠标操作开发非常简单,它也属于用户接口设计,一直使用Misscoft Studio 中C/C++或.net来做,但是如果只需要简单的鼠标,键盘操作。而OpenCV并未直接提供库的函数进行鼠标操作。本节介绍使用OpenCV完成鼠标操作相关知识。鼠标操作主要理论有两点,第一是监控鼠标操作,鼠标点击,移动,松开,然后通过mouse_event识别判断出那一种鼠标的操作,根据不同的操作然后进行处理;第二是在主函数中加入鼠标的回调函数,将鼠标操作与程序的窗口绑定。每当滑动鼠标在窗口点击一下的时候,原创 2013-11-26 18:43:08 · 7659 阅读 · 0 评论 -
k-近邻算法(kNN)
k-近邻(k Nearest Neighbors)算法采用测量不同特征之间的距离方法进行分类。它的工作原理是:存在一个样本数据集合,并且样本集中每个数据都存在标签,即我们知道样本每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。k-近邻算原创 2014-03-16 14:11:33 · 3241 阅读 · 0 评论 -
模拟Matlab显示图像的效果
VisualTool.h头文件,VisualTool.cpp...关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博和新浪微博songzi_tea.原创 2014-04-06 18:15:05 · 2617 阅读 · 0 评论 -
OpenCV获取与设置像素点的值的几个方法
使用 Mat 中对矩阵元素的地址定位的知识。使用 Mat::at 函数原型 template<typename _Tp> inline _Tp& Mat::at(…) //其中参数有多个,也就是说 at 函数有多个重载。返回值为 Mat 类型, Mat 有个索引的重载,也就是 [] 符号的重载,用这个重载可以定位多通道数据,具体示例可以看下面代码。注意 Mat::at 函数是个模板函数, 需要指明参数类型, 因为这张图是具有红蓝绿三通道的图,所以它的参数类型可以传递一个 Vec3b, 这是一个存放 3 个原创 2012-12-30 20:05:53 · 7460 阅读 · 0 评论 -
利用OpenCV鼠标控制窗口大小
功能程序:使用鼠标控制三个窗口的放大与缩小。在此不附上运行结果效果图,若需体验其效果如何,可以自己动手copy参考代码,运行试试一下看。原创 2014-04-06 09:17:48 · 3441 阅读 · 0 评论 -
Python 基础知识
>>> 2+35>>> 1.0/2.00.5>>> 1.0//2.0 # //0.0>>> 1%2 #%理解1>>> 1/2 # / 理解0>>> 2**38>>> -2**3-8>>> (-2)**3-8>>> (-2)**24长整型数Python可以处理非常大的整型:>>> 10000004040404040679100原创 2013-07-06 12:52:35 · 2276 阅读 · 0 评论 -
flipcode进行图像简单反转实现
flip函数Flips a 2D array around vertical, horizontal, or both axes.C++: void flip(InputArraysrc, OutputArraydst, int flipCode)C: void cvFlip(const CvArr*src, CvArr*dst=NULL, intflip_mode=0)Parameters: src - input array dst - output array of the same size a原创 2013-01-08 14:07:15 · 21784 阅读 · 0 评论 -
OpenCV漫水填充
漫水填充就是用一定颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果;漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。种子填充算法是从多边形区域内部的一点开始,由此出发找到区域内的所有像素。它采用的边界定义是区域边界上所有像素具有某个特定的颜色值,区域内部所有像素均不取这一特定颜色,而边界外的像素则可具有与边界相同的颜色值。而扫描线种子填充算法属于种子原创 2013-08-29 21:39:15 · 6637 阅读 · 5 评论 -
矩阵的使用与操作
矩阵和图像的使用与操作是掌握OpenCV(C语言版)的基本功能。本节主要介绍OpenCV中C语言版(OpenCV2.0以下)的矩阵使用方法。OpenCV有一个矩阵操作的C语言接口,另外也有一些C++语言的矩阵操作接口,通常C++语言接口更方便,且同样有效。在OpenCV中,向量被当成是行或列为1的矩阵,并且矩阵在内存中的存储方式是按行存储,且每行按4字节对齐。对矩阵和向量的操作分为几种类型.即:矩阵与矩阵之间的操作,矩阵元素之间的操作,向量乘法操作,单个矩阵操作,非齐次线性系统的求解操作,对称矩阵操作和奇齐原创 2013-11-12 14:18:36 · 3260 阅读 · 0 评论 -
Corner Detection Using cvGoodFeaturesToTrack
Here’s an example opencv application which uses cvGoodFeaturesToTrack to detect corners in a webcam video feed.// This code displays corners found by the opencv function// GoodFeaturesToTrack (cvGo原创 2010-07-05 17:44:00 · 4618 阅读 · 0 评论 -
OpenCV编写毛玻璃效果实现(需进一步提高)
IplImage* src = cvLoadImage("../Test.jpg", 1); if(src) { int w = src->width, h = src->height, ws = src->widthStep;uchar* dsrc = (uchar*)src->imageData; IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels); uchar* ddst = (uchar*)dst-原创 2010-06-04 20:17:00 · 2746 阅读 · 0 评论 -
利用脚本帮找回微信上删除了“好友“
相信大家在微信上一定被上面的这段话刷过屏,群发消息应该算是微信上流传最广的找到删除好友的方法了。但群发消息不仅仅会把通讯录里面所有的好友骚扰一遍,而且你还得挨个删除好几百个聊天记录,回复大家的疑问和鄙视~原创 2016-09-01 21:01:07 · 3916 阅读 · 0 评论 -
Smooth Code
IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. By downloading, copying, installing or using the software you agree to this license.If you do not agree to this license, do not原创 2016-08-23 12:07:06 · 1474 阅读 · 0 评论 -
实现灰度图像峰值信噪比计算
峰值信噪比(PSNR),一种评价图像的客观标准。它具有局限性,PSNR是“PeakSignaltoNoiseRatio”的缩写。peak的中文意思是顶点。而radio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr是一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,输出的影像通常都会有某种程度与原始影像不一样。为了衡量经过处理后的影像品质,我们通常会参考PSNR值来认定某个处理程序够不够令人满意。原创 2013-12-26 14:10:45 · 11464 阅读 · 1 评论 -
积分投影
将图像序列中的每一帧图像分别沿水平和垂直方向进行积分投影形成两个积分投影向量。即:对于二值化后的图像,进行水平和垂直两个方向的投影,然后分别建立直方图,可以进一步进行阴影去除。关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.原创 2014-01-07 19:44:58 · 5562 阅读 · 0 评论 -
椭圆轮廓识别
首先,从图像中检测出轮廓,然后再从轮廓中检索出椭圆轮廓。关于Image Engineering& Computer Vision更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.原创 2014-06-01 19:50:02 · 4627 阅读 · 1 评论 -
图像的形态学处理
数学形态运算中,最常见的基本运算有七种, 分别为:腐蚀、膨胀、开运算、闭运算、击中、细化和粗化, 它们是全部形态学的基础。腐蚀和膨胀,看上去好像是一对互逆的操作,实际上,这两种操作不具有互逆的关系。 开运算和闭运算正是依据腐蚀和膨胀的不可逆性,演变而来的。 先腐蚀后膨胀的过程就称为开运算。 闭运算是通过对腐蚀和膨胀的另一种不同次序的执行而得到的, 闭运算是先膨胀后腐蚀的过程,其功能是用来填充物体内细小空洞、连接邻近物体、平滑其边界, 同时不明显改变不明显改变其面积。原创 2014-04-26 22:13:02 · 2392 阅读 · 0 评论 -
实现图像pyramids
''' file name : pyramids.pyDescription : This sample shows how to downsample and upsample images'''import cv2import numpy as npimg = cv2.imread('test.jpg')print " Zoom In-Out demo "print " Pre原创 2014-04-08 20:51:03 · 1947 阅读 · 0 评论 -
IplImage与BMP相互转换
在windows编程中,很多图片信息,都是基于windows系统所谓的DIB(设备无关位图)的结构,其定义在结构体 BITMAPINFOHEADER 中。本方法可以讲 windows 定义的DIB 结构和Opencv内部定义的IPLImage结构做相互转化。原创 2014-04-06 14:13:04 · 2148 阅读 · 0 评论 -
OpenCV 2.0 with Windows Installation
Windows Installation Notes:The library is better to be installed to a directorywithout a space in its name, such as the default C:/OpenCV2.0 - otherwise (e.g. if you install it to C:/Program Fil转载 2010-05-26 15:42:00 · 1469 阅读 · 0 评论 -
利用函数参数实现图像混合
函数 cvAddWeighted 计算两数组的加权值的和: dst(I)=src1(I)*alpha+src2(I)*beta+gamma 所有的数组必须有相同的类型相同的大小或ROI大小.在cvAddWeighted()中,有两个源图象src1 和 src2。这两个图象可以是任何象素类型,只要它们的类型相同。它们可以是单通道或是三通道,只要它们相符。运算结果的目标图象,dst必须和src1和src2有相同的象素类型。这些图象可以是不同的尺寸,但它们的ROI必须有相同的大小,否则OpenCV会报告一个错原创 2013-07-06 15:49:59 · 2741 阅读 · 0 评论 -
OpenCV对图像获取像素值方法总结
常规方法获取像素值: cv::Mat cvImg = imread("E:\\Test,jpg"); for(int i = 0;i < cvImg.rows; i++){ for(int j = 0;j < img.cols;j++){ s = cvGet2D(img,i,j); // get the (i,j) pixel value s原创 2012-12-11 13:40:46 · 3870 阅读 · 0 评论 -
使用python实现标记图像感兴区域
Although it is possible to create nice bar plots,pie charts scatter plots,etc.only a few comments are needed for most computer vision purposes.Most Importantly ,we want to be able to show things like interest points,correspondences and detected objects us原创 2013-12-13 15:42:36 · 5861 阅读 · 0 评论 -
使用Python实现图像标记点的坐标输出
Sometimes we have need to interact with an application,for example by marking points in an image,or you need to annotation some training data.PyLab comes with a simple function ginput() the let's you do just that .This plots an image and waits for the use原创 2013-12-13 17:14:58 · 37683 阅读 · 16 评论 -
利用OpenCV实现模拟绳线运动
模拟绳线的运动,某一时刻的效果如下:void DrawString(IplImage *image, double t){ if(!image) return; cvSet(image, cvScalarAll(250)); int sampleCount = image->width/2; int marginalX = (im原创 2013-12-23 19:01:13 · 2188 阅读 · 0 评论 -
利用OpenCV实现图像边缘直方图输出
这是边缘直方图显示程序,今天整理了以前编写的程序,贴出来给大家分享一下(注意以前,这个编写程序有点乱,请原解(^_^)~.).参考代码如下所示:#include "opencv2/opencv.hpp"#pragma comment(lib, "opencv_core246d.lib")#pragma comment(lib, "opencv_imgproc246d.lib")原创 2013-12-31 14:20:45 · 4649 阅读 · 0 评论 -
利用OpenCV实现图像纹理特征提取
这个程序是简单地图像纹理特征提取,参考代码如下所示:IplImage * cvSampleImageTextureExtraction(IplImage* img,IplImage* dst){ uchar* data=(uchar*)img->imageData; int step=img->widthStep; //IplImage* dst=cvCreateImage(cvSize原创 2013-12-31 15:19:58 · 29810 阅读 · 11 评论 -
图像边框实现
Use the OpenCV function :copy_make_border:`copyMakeBorder <>` to set the borders (extra padding to your image). The explanation below belongs to the book Learning OpenCV by Bradski and Kaehler.In our previous tutorial we learned to use convolution to opera原创 2013-08-12 13:10:01 · 3647 阅读 · 0 评论 -
直方图计算(续)
在直方图计算一节中,介绍了相关图像直方图计算。本节进行回顾一下相关知识,同时加深一步了解图像直方图相关步骤,以及实践一维和二维直方图计算。thresh是一个二维数据,里面存储每个bin的上下边界,对于非均匀直方图,存储在thresh2中,直方图的数据主要存储在CvMatND结构中,bins中其实就是指向CvMatND中的data数据指针,对于密集矩阵,可以通过CvMatND mat直接访问直方图数据。sizes必须为整数数组,长度等于dims的大小,每个整数表示对应维数分配的bin个数。例如dims =2,原创 2013-08-03 17:41:09 · 3014 阅读 · 0 评论 -
图像肤色初步检测实现
肤色检测输出结果中有许多瑕疵,待于进一步处理(如:滤波操作.....)。在此贴出几种图像肤色检测相关代码,供大家参考。原创 2014-05-02 09:03:22 · 3428 阅读 · 2 评论 -
读取文件夹连续图片
总结一下关于图片批量处理方法,仅作参考。原创 2014-04-24 13:12:40 · 3289 阅读 · 0 评论 -
实现图像特效之浮雕与雕刻
图像处理软件中,如PhotoShop,免费开源的位图形编辑GIMP软件中,对图像进行特效的浮雕或雕刻功能。本节介绍使用OpenCV实现图像特效之浮雕和雕刻相关知识,并贴出相关参考代码和输出测试图像效果图。浮雕/雕刻算法实质是很简单地,即:对图像的每一个点进行卷积处理。假设原图像为X,处理后的图像为Y;浮雕算法核kernel矩阵定义为:[1 , 0, 0 ; 0, 0, 0; 0, 0,-1]. 那么,对于坐标为(i,j)点,浮雕效果图的算法为Y(i,j)=X(i+1,j+1)-X(i-1,j-1)+128原创 2013-11-21 22:45:17 · 6103 阅读 · 0 评论 -
OpenCV模块解析与构架图
本节主要介绍OpenCV中C语言版(OpenCV2.0以下)和C++语言版各模块功能,以及构架图。在windows下较低版本(2.0以下)的OpenCV中包含此模块,一般用于处理和操作摄像头和视频流的跨平台模块,在windows下 被封装成.dll动态链接库,在Linux中被以so(共享库,和动态链接库类似)的形式使用。 opencv_core模块,其中包括库中核心函数结构,特别是基础的数据结构和算术函数。opencv_imgproc模块,包含图像处理函数。opencv_highgui模块,包含读写图原创 2013-11-11 21:20:34 · 5268 阅读 · 0 评论 -
【OpenCV-Python】Python Extension Packages for Windows
This page provides 32- and 64-bit Windows binaries of many scientific open-source extension packages for the official CPython distribution of the Python programming language.The files are unofficial (meaning: informal, unrecognized, personal, unsupported)T原创 2013-08-29 23:18:50 · 3610 阅读 · 0 评论 -
OpenCV中的结构体、类与EmguCV的对应表
Basic Structures main data structures used in opencv.Dynamic Structuresfor creating growable sequences and other dynamic data structures allocated in CvMemStorage. If you use the new C++, Python, Java etc interface, you will unlikely need this functionalit原创 2013-01-02 22:29:46 · 13468 阅读 · 0 评论 -
lplImage格式与Mat格式之间转换
Mat的拷贝只是复制了Mat的信息头,数据的指针也指向了被拷贝的数据地址,而没有真正新建一块内存来存放新的矩阵内容。这样带来的一个问题就是对其中一个Mat的数据操作就会对其他指向同一块数据的Mat产生灾难性的影响。传统的lplImage格式也可直接转换为Mat格式。如果想将新版本的Mat格式转换为老版本,则需要如下调用。Mat结构更加友好,很多操作更接近MATLAB的风格5.也有Point2f,Point3f,vector等数据结构可以使用.原创 2013-01-07 14:36:29 · 6525 阅读 · 0 评论 -
用于测量OpenCV的API
利用python实现用于测量Opencv的API的参考代码如下所示:from glob import globimport cv2import reif __name__ == '__main__': cv2_callable = set(['cv2.'+name for name in dir(cv2) if callable( getattr(cv2, name) )])原创 2014-02-01 09:47:03 · 2270 阅读 · 0 评论 -
图像亮度变换
图像处理中,亮度变换指图像在空域上的点运算,通常包括图像增强,亮度/对比度调节,GAMMA值调节各直方图调整等。如何进行图像GAMMA值调节,我们可以参考Matlab中函数imadjust.m理解其原理,然后,使用OpenCV实现与函数imadjust一样功能,进行图像亮度变换实现。亮度变换的原理可以参考Matlab中函数imadjust.m.首先,在imadjust中,参数gamma指明了由f 映射生成图像g 时曲线的形状。如果gamma的值小于1,映射被加权至较高(较亮)的输出值。如果gamma的值大于原创 2013-11-19 21:03:00 · 7409 阅读 · 0 评论