开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

微信团队分享:视频图像的超分辨率技术原理和应用场景

本文试着讲述超分辨率技术的正确打开方式,浅谈视频图像的超分辨率技术的基本概念和应用场景等问题。
JackJiang- 发布于 3个月前 阅读 311 点赞 1

Ubuntu16.04搭建caffe环境(cpu-only)与Python调用

*本文参考[caffe官网教程](http://caffe.berkeleyvision.org/install_apt.html)以及网上的两篇教程:[Ubuntu14.04+CPU+Python的Caffe安装教程](https://www.jianshu.com/p/5351e732da5e)、[Caffe学习系列(13):数据可视化环境(python接口)配置](http://www.cnblogs.com/denny402/p/5088399.html)编写而成,因为过程比较波折,记录下来以备日后查用* ## 安装编译caffe的各种依赖 ### 安装基础依赖 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev ### 安装BLAS sudo apt-get install libatlas-base-dev ### 其他的一些依赖 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev ## Python Caffe ### 安装Python sudo apt-get install python-dev ###安装anaconda 从清华的镜像下载anaconda,根据anaconda官网提供的版本号,从清华镜像的目录中查找到对应的版本为Anaconda2-5.0.1-Linux-x86_64.sh(python2.7版本) wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-5.0.1-Linux-x86_64.sh 下...
咾咔叽 发布于 3个月前 阅读 222

直播技术简单介绍之直播协议

近两年,互联网技术不断发展,网络直播平台迅速兴起。然而因技术问题,各平台的质量参差不齐。直播涉及到的技术比较多,主要大类有:采集、前处理、音视频编解码、流媒体协议、系统架构、CDN、播放控制、交互技术等。此文就流媒体协议和所涉及到的直播延迟进行简单介绍。
图鸭科技研究员 发布于 5个月前 阅读 635 评论 1

制作mobi格式的PostgreSQL文档

本人是Kindle的重度用户,喜欢使用Kindle看书,而且一直秉承着学习PostgreSQL首先要完全阅读官方文档的念头,一直在看PDF版的文档,奈何工作和娱乐都是电脑,眼睛早已不堪重负,所以一直萌生了做mobi格式的文档。前期已经手工做了6寸PDF版,奈何人工太长,现利用文档原有的编译方法,进行epub格式转化,进而转为mobi格式。欢迎有需要的下载、收藏。
PGSmith 发布于 6个月前 阅读 344 评论 1

mingw+vs2013静态编译最新ffmpeg与x264

一、 源码包下载 1、 Ffmpeg ``` $ git clone https://git.ffmpeg.org/ffmpeg.git ``` 2、 x264 ``` $ git clone http://git.videolan.org/git/x264.git ``` 或 ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 下载 二、 编译工具 1、 mingw https://sourceforge.net/projects/mingw/ 在线安装最新版本 2、 yasm http://yasm.tortall.net/Download.html 3、 nasm http://www.nasm.us/pub/nasm/releasebuilds/ 4、 pkg-config, mingw中默认没有 http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.4-1_win32.zip只需要用到其中的libglib-2.0-0.dll文件 三、 mingw/msys环境设置 1、 复制 D:\MinGW\msys\1.0\ msys.bat 为 D:\MinGW\msys\1.0\ msys-vs2013.bat,打开文件,在最前面加上:call "D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" 保存文件 2、 将yasm.exe与nasm.exe放置到d:/MinGW/msys/1.0/bin/中 3、 将pkg-config-0.23-2.zip解压pkg-config.exe与glib_2.18.4-1_win32.zip中的 libglib-2.0-0.dll至d:/MinGW/ms...
caiwang213 发布于 6个月前 阅读 165

数据可视化(三)基于 Graphviz 实现程序化绘图

- OmniGraffle 和 Graphviz - Why draw when you can code? - Graphviz 简介 - 最佳 Graphviz 实践(一):流程图、数据结构图、网络路径 Trace Route - 最佳 Graphviz 实践(二):复杂社会关系链分析(《红楼梦》、《权力的游戏》) - 最佳 Graphviz 实践(三):机器学习算法-决策树(Decision Tree)
RiboseYim 发布于 7个月前 阅读 2083 评论 5 点赞 6

利用Photoshop + Matlab 解析10-bit RAW

很多图像芯片都支持10bit/12bit Bayer RAW的输出,而大部分图像查看软件都无法直接处理这类文件。下面介绍一种办法,供大家参考。
ColorBeans 发布于 8个月前 阅读 170

opencv+python机读卡识别整合版

通过随意一张机读卡的照片,识别其中选择题题号,选项,以及相关数字识别
Digimon 发布于 9个月前 阅读 3518 评论 10 点赞 18

python数据可视化----绘制各种图形

1.环境 系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy 2.numpy库产生随机数几种方法 import numpy as np numpy.random rand(d0, d1, ..., dn) In [2]: x=np.random.rand(2,5) In [3]: x Out[3]: array([[ 0.84286554,  0.50007593,  0.66500549,  0.97387807,  0.03993009],        [ 0.46391661,  0.50717355,  0.21527461,  0.92692517,  0.2567891 ]]) randn(d0, d1, ..., dn)查询结果为标准正态分布 In [4]: x=np.random.randn(2,5) In [5]: x Out[5]: array([[-0.77195196,  0.26651203, -0.35045793, -0.0210377 ,  0.89749635],        [-0.20229338,  1.44852833, -0.10858996, -1.65034606, -0.39793635]]) randint(low,high,size) 生成low到high之间(半开区间 [low, high)),size个数据 In [6]: x=np.random.randint(1,8,4) In [7]: x Out[7]: array([4, 4, 2, 7]) random_integers(low,high,size) 生成low到high之间(闭区间 [low, high)),size个数据 In [10]: x=np.random.random_integers(2,10,5) In [11]: x Out[11]: array([7, 4, 5, 4, 2]) 3.散点图 x x轴 y y轴 s 圆点面积 c 颜色 marker 圆...
南寻 发布于 11个月前 阅读 3954 评论 5 点赞 8

SGPlayer 原理详解 - 支持 VR、RTMP 的视频播放框架

# SGPlayer 原理详解 SGPlayer 是一款基于 AVPlayer、FFmpeg 的媒体资源播放器框架。支持全景视频,RTMP、RTSP 等直播流;同时支持 iOS、macOS、tvOS 三个平台。本文将采用图解+说明的方式把关键模块的实现原理介绍给大家。 - 项目地址:[OSChina - SGPlayer](http://git.oschina.net/libobjc/SGPlayer) ## 发起原因 关于视频播放,苹果提供的 AVPlayer 在性能上有着十分出色的表现,在无特需求且资源可控的时,首选一定是它。但随着 VR 和直播的兴起,仅使用 AVPlayer 很多时候已经无法满足需求。出于性能考虑,又不能完全抛弃 AVPlayer,毕竟在点播时有着明显的优势。而在现有的开源项目中,普遍定位比较单一,并不能兼顾 AVPlayer、直播、VR。这样一来,需同时使用3款播放器才能满足需求,即点播使用 AVPlayer,直播使用一个独立的播放器,VR 使用一个独立的播放器。这样处理3套不同的接口和回调事件,着实很让人崩溃!SGPlayer 的出现大大简化了这一过程。 ## 组成结构 和 播放流程 ![SGPlayer](https://coding.net/u/0x010101/p/resource-public/git/raw/master/SGPlayer/SGFFPlayer-playback.jpeg) 上图展示了 SGPlayer 的播放流程和主要组件,下面简单介绍图中各组件...
libobjc 发布于 12个月前 阅读 650 评论 1

谷歌开源图片压缩算法Guetzli实测体验报告

谷歌大神又出开源新技术啦,这次是对JPEG格式的图片采用全新算法重新编码,输出的图片还是JPEG但是图片大小明显缩小,而质量不但没有损失,甚至还更加优化,速速来体验一把。
腾讯云加社区 发布于 1年前 阅读 878 点赞 1

用JAVA写一个简易图片防篡改

图片防止篡改部分 第一步,获取图片的md5字符串,并转为字节数组 //将图片使用md5加密 private static byte[] img2Md5Bytes(File file,String salt) throws Exception{ FileInputStream inputStream=new FileInputStream(file); StringBuilder builder=new StringBuilder(); byte[] bytes=new byte[1024]; int bytesRead; while ((bytesRead=inputStream.read(bytes))!=-1){ builder.append(new String(bytes,0,bytesRead)); } inputStream.close(); builder.append(salt); String md5=md5(builder.toString()); return hexStringToBytes(md5); } //16进制转字节数组 private static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < l...
empty_null 发布于 1年前 阅读 1689 评论 4 点赞 4

基于caffe与MATLAB接口回归分析与可视化

本文内容主要分为两部分,第一部分介绍基于caffe的回归分析,包括了数据准备、配置文件等;第二部分介绍了在MATLAB上进行的可视化。(话说本人最近有个课题需要做场景分类,有兴趣可以共同探讨一下)。
Parser7 发布于 1年前 阅读 1099

opengl的MVP矩阵变换

在3D图形中,要实现物体的移动,场景的移动都离不开矩阵操作,甚至在2D的屏幕上显示3D的图形,靠的也是透视矩阵。
流云1987 发布于 1年前 阅读 468 评论 1

流媒体:ffmpeg生成HLS的m3u8与ts片段

流媒体:ffmpeg生成HLS的m3u8与ts片段
IamOkay 发布于 1年前 阅读 3791

流媒体:在CentOS 7 安装ffmpeg流媒体工具

CentOS 7 安装ffmpeg
IamOkay 发布于 1年前 阅读 805

那些适合日常使用的开源工具和应用(娱乐篇)

本系列文章将针对办公、设计、娱乐、教育等日常使用场景,进行一些开源工具和应用的推荐,希望能对大家有所帮助。优秀的实在太多,篇幅有限,仅列出部分,发现更多可以利用 OSC 的搜索工具。喜欢请关注、收藏、评论,欢迎打赏~~ Part 1:那些适合日常使用的开源工具和应用(办公篇) Part 2:那些适合日常使用的开源工具和应用(设计篇) Part 3:娱乐篇 影视 音乐 游戏 一、影视 1、VLC Media Player VLC Media Player 是知名的开源视频播放器,功能强大,它可以播放来自网络、摄像头、磁盘、光驱的文件,支持包括 MPEG 1/2/4,、H264、 VC-1、DivX、 WMV、 Vorbis、AC3、AAC等格式的解码。且无广告,无跟踪用户的行为。 VLC Media Player 适用 Windows、Linux、OS X、Android、iOS、Windows Phone 等多个平台,可设置成中文。据悉,最新发布的 3.0预览版 还支持 360 度视频,允许查看全景照片。 开源协议:GPLv2 2、MPlayer MPlayer 同样是一款知名的开源视频播放器,支持MPEG / VOB、AVI、Ogg / OGM、VIVO、ASF / WMA / WMV、QT / MOV / MP4、RealMedia、Matroska、PVA文件等多种格式解码。支持通过一些硬件显示 MPEG 解码器板,例如 Siemens DVB、DXR2和DXR3 / Hollyw...
王练 发布于 1年前 阅读 7008 评论 13 点赞 12

那些适合日常使用的开源工具和应用(设计篇)

本系列文章将针对办公、设计、娱乐、教育等日常使用场景,进行一些开源工具和应用的推荐,希望能对大家有所帮助。优秀的实在太多,篇幅有限,仅列出部分,发现更多可以利用 OSC 的搜索工具。喜欢请关注、收藏、评论,欢迎打赏~~ Part 1:那些适合日常使用的开源工具和应用(办公篇) Part 2:设计篇 平面设计/图像设计 网页设计/网页开发 CAD 设计 影视设计/视频编辑 一、平面设计/图像设计 1、Krita Krita 是一个免费开源绘图工具,是专门为概念艺术家、插图作者、粗面纹理艺术家,和视觉特效行业而设计的。Krita 已经开发了超过10年之久,它提供很多通常和创新性的功能特性来帮助新手和专业人士。 Krita 共有 9 种独特的画笔引擎来定制画笔。每一个引擎都有大量的设置选项,每个画笔引擎被设计成能够满足一种特殊需求,比如颜色涂抹引擎、形状引擎、颗粒引擎、滤镜引擎等等。还可以保存使用过的笔刷设置,用独特标签系统来组织它们。 开源协议:GPL 2、MyPaint MyPaint 是一个图像绘画程序,它支持的压力敏感的绘图板,并配备了一个易于使用的刷子收集。有一个复杂的接口,用于创建自己的画笔,把重点放在刷动力学(变化的速度,压力,或随机) 。画布的大小是无限的,并...
王练 发布于 1年前 阅读 6493 评论 13 点赞 20

在Linux下修复损坏的PDF文件

Recover corrupted PDF file in Linux
bhzhu203 发布于 1年前 阅读 290

GIScript2016-Docker 快速入门

基于Docker的GIScript2016快速使用入门,教你通过Docker快速部署GIScript,使用Jupyter进行基于浏览器的数据分析编程。
openthings 发布于 2年前 阅读 97

Python将PDF文件转换成PNG的方案

目前最靠谱的是基于 mupdf 的 Python 绑定:  https://github.com/rk700/PyMuPDF  demo地址:  https://github.com/rk700/PyMuPDF/blob/master/demo/demo.py 安装: 到 https://pypi.org/project/PyMuPDF/#files 下载操作系统对应的安装文件 下载完成后,使用pip安装 然后就可以跑代码了.... 将PDF文件转换成PNG的代码: import fitz import sys doc = fitz.open('demo.pdf') for pg in range(doc.pageCount): page = doc[pg] zoom = int(100) rotate = int(0) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate) # create raster image of page (non-transparent) pm = page.getPixmap(matrix=trans, alpha=False) # write a PNG image of the page pm.writePNG('%s.png' % pg)  ...
乐_然 发布于 4天前 阅读 8

Python3 图片(jpg、bmp、png)转PDF

python 图片(jpg、bmp、png)转PDF,本人是Kindle的重度用户,喜欢使用Kindle看书。同时又喜欢看漫画,但是网上下载的漫画很多都是压缩包,解压后都是一张张图片。人工转换太累了,所以用 Python3 写了个转换的小程序,把图片转化为 PDF。
35Niu 发布于 5天前 阅读 8

Python OpenCV实例:图像重映射

#coding:utf-8 ''' 图像重映射 ''' import cv2 import numpy as np src = cv2.imread('datas/l1.jpg') rows,cols,channels = src.shape img_x = np.zeros((rows,cols),np.float32) img_y = np.zeros((rows,cols),np.float32) # 坐标映射 for y in range(rows): for x in range(cols): img_y[y,x] = rows - y img_x[y,x] = cols - x dst = cv2.remap(src,img_x,img_y,cv2.INTER_LINEAR) cv2.imshow('src',src) cv2.imshow('dst',dst) cv2.waitKey() cv2.destroyAllWindows()
IOTService 发布于 1周前 阅读 9

Python OpenCV实例:Schmid滤波

#coding:utf-8 ''' Schmid滤波 参考:https://blog.csdn.net/xiaowei_cqu/article/details/25131473 ''' import cv2 import numpy as np import math def schmid_kernel(tao,sigma): r = float(sigma / (4.0 * tao)) sigma2 = float(sigma * sigma) half_filter_size = 10 filter_size = half_filter_size * 2 + 1 schmid = np.zeros((filter_size,filter_size),np.float32) filter_sum = 0.0 for i in range(filter_size): #s = schmid[i,:] for j in range(filter_size): x = i - half_filter_size y = j - half_filter_size r = math.sqrt(x * x + y * y) tmp = 2.0 * math.pi * tao * r / sigma tmp2 = float(r * r / (2.0 * sigma2)) schmid[i,j] = math.cos(tmp) * math.exp(-tmp2) filter_sum += schmid[i,j] if np.abs(filter_sum - 0.0) < 1e-6: return schmid for i in range(filter_size): #s = schmid[i,:] for j in range(filter_size): schmid[i,j] /= fi...
IOTService 发布于 1周前 阅读 6

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

ffmpeg学习

ffmpeg,截取视频,视频截图
潘帅_阿尔法 发布于 1个月前 阅读 8

Python OpenCV实例:图像直方图均衡化(数学公式简单实现)

#coding:utf-8 ''' 直方图均衡化 作用:通常用来增加图像局部对比度,尤其在图像的有用数据的对比度相当 接近时,通过直方图均衡化,图像的亮度可以更好地在直方图上分布 基本思想:把原始图像的直方图变换为均匀分布的形式,增加了像素 灰度值的动态范围,从而增强图像的整体对比度效果 算法实现步骤: 1、计算图像f的各个灰度级中像素出现的概率 p(i) = n(i) / n ,{i|0,1,...,L - 1} 其中:n(i)表示灰度级i出现的次数,L是图像中所有的灰度数,p实际上是图像的 直方图归一化到0~1范围内,如果把c作为对应p的累计概率函数,则定义为: i c(i) = ∑(p(x(j)) j=0 c是图像的累计归一化直方图 2、创建一个形式为 y = T(x)的变化,原始图像中的每个值就生产一个y,这样 y的累计概率函数形式就可以在所有值范围内进行线性化,转换公式为: y(i) = T(x(i)) = c(i) ''' import cv2 import numpy as np def hist_eq(image): img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = img_gray.shape gray_flat = img_gray.reshape((rows*cols,)) dist_flat = np.zeros_l...
IOTService 发布于 4天前 阅读 7

图片格式WebP在微信中的尝试

省钱,省带宽
刘少 发布于 1个月前 阅读 94

CVBS视频信号解析

https://blog.csdn.net/app_12062011/article/details/19475741/
DB_Terrill 发布于 15小时前 阅读 9

OpenCV3 识别图中表格-JAVA 实现

**关于 JAVA 学习 OpenCV 的内容,函数讲解。内容我均整理在 GitHubd的[OpenCV3-Study-JAVA](https://github.com/liuqi0725/OpenCV3-Study-JAVA)** # OpenCV 3 识别图中表格-Java 实现 ## 1. 说明 > 网上大部分资料,都是针对 C++的,python、java 的例子太少了。所以最近在做这个的时候,把他记录下来,也可以帮助一些人少走弯路。 **OpenCV 确实强大,强大到每一个方法,都能 google 到一篇专题文章,在写的过程中,参考了许多资料,最终完成了实现和注释。** 但是这仅仅是入门,找到表格后的利用才是后面的核心。比如: 1. 表格的 OCR 识别,识别表头,内容数据,形成结构化数据。 2. 图片按照顺序,转 Word文档或者保存为 html,这样就可以完成格式的转化,方便在 web 端查看,用户下载。 3. 其他利用... 本文仅针对效果较好的,无倾斜,背景干净的图片进行识别。复杂的情况会可能无法满足,需要进一步处理。仅仅是个入门。 ## 2. 开发环境 + macOS Sierra 10.12.4 + IntelliJ IDEA 2017 + Junit 4.12 + JDK 1.8 > 因为在 mac 下通过 brew 安装的 opencv ,所以包都是跟当前系统匹配的,安装目录也是一致的。 > Windows 下需要根据自己的系统环境,位数,修改代码的`lo...
35Niu 发布于 3个月前 阅读 244

Python OpenCV实例:马赛克效果

#coding:utf-8 ''' 马赛克效果 ''' import cv2 import numpy as np point_start = {'x':0,'y':0} point_end = {'x':0,'y':0} rows = 0 cols = 0 selected = False def mosaic(selected_image,nsize=9): rows,cols,_ = selected_image.shape dist = selected_image.copy() # 划分小方块,每个小方块填充随机颜色 for y in range(0,rows,nsize): for x in range(0,cols,nsize): dist[y:y+nsize,x:x+nsize] = (np.random.randint(0,255),np.random.randint(0,255),np.random.randint(0,255)) return dist def mouse_handler(event,x,y,flag,params): global point_lft,point_rgt,selected if event == cv2.EVENT_LBUTTONDOWN: print('button down') point_start['x'] = x point_start['y'] = y if event == cv2.EVENT_LBUTTONUP: print('button up') point_end['x'] = x point_end['y'] = y selected = True src = cv2.imread('datas/images/f2.jpg') rows,cols,_ = src.shape src_cpy = src.copy() cv2.namedWindow("src") cv2.setMouseCallb...
IOTService 发布于 5天前 阅读 12

Python实例:毛玻璃效果

#coding:utf-8 ''' 毛玻璃效果 ''' import cv2 import numpy as np src = cv2.imread('datas/images/f1.jpg') dst = np.zeros_like(src) rows,cols,_ = src.shape offsets = 5 random_num = 0 for y in range(rows - offsets): for x in range(cols - offsets): random_num = np.random.randint(0,offsets) dst[y,x] = src[y + random_num,x + random_num] cv2.imshow('src',src) cv2.imshow('dst',dst) cv2.waitKey() cv2.destroyAllWindows()  
IOTService 发布于 5天前 阅读 13

ffmpeg项目导入eclipse

    最近想要学习一下ffmpeg,下载代码,配置环境,编译成功。一路下来到时没有问题,但是想要研读下代码的时候发现总归是有些不方便。     像我这样三流的程序员没有实在是需要一些类似ide的工具来方便跳转这样子。vim是不可能vim的,这辈子都不可能vim。只能用用ide这样子,ide的跳转又方便…………     幸运的是ffmpeg官方已经有介绍如何在eclipse上导入ffmpeg项目了,真是不错的消息。                                                 https://trac.ffmpeg.org/wiki/Eclipse     用visual studio似乎也可以,但是这就非官方了,而且需要将makefile的打包方式转成visual c++。
街角的小丑 发布于 2周前 阅读 9

Python OpenCV实例:灰度图像线性运算

# coding:utf-8 ''' 灰度图像线性运算 公式:g(x,y) = p * f(x,y) + L 其中:f(x,y)为输入灰度图像像素值,g(x,y)为输出灰度图像像素值 参数:p = 1,L = 0,则复制图像; p > 1,则图像对比度减少 p = 1,L!=0,则图像变亮 p < 0,则图像变暗 ''' import cv2 import numpy as np def grey_linear_compute(image,p,l): img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = img_gray.shape dist = np.zeros_like(img_gray) for y in range(rows): for x in range(cols): pixel = img_gray[y,x] new_pixel = wise_element(p * pixel + l) dist[y,x] = new_pixel return dist def rgb_linear_compute(image,p,l): # img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) image_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) rows,cols,_ = image.shape dist = np.zeros_like(image) for y in range(rows): for x in range(cols): pixel = image_rgb[y,x] r = wise_element(p * pixel[0] + l) g = wise_eleme...
IOTService 发布于 4天前 阅读 3

Python OpenCV实例:RGB图像底片效果

#coding:utf-8 ''' RGB图像底片效果 ''' import cv2 import numpy as np src = cv2.imread('datas/l1.jpg') dist = 255 - src cv2.imshow('src',src) cv2.imshow('dist',dist) cv2.waitKey() cv2.destroyAllWindows()  
IOTService 发布于 4天前 阅读 8

Python OpenCV实例:Gabor滤波器参数可视化

#coding:utf-8 ''' Gabor滤波器参数可视化 参考:https://blog.csdn.net/lhanchao/article/details/55006663 ''' import cv2 import numpy as np import math # λ(波长)变化 kernel1 = cv2.getGaborKernel((311,311),10,0,5,0.5,0) kernel2 = cv2.getGaborKernel((311,311),10,0,10,0.5,0) kernel3 = cv2.getGaborKernel((311,311),10,0,15,0.5,0) kernel4 = cv2.getGaborKernel((311,311),10,0,20,0.5,0) cv2.imshow("lambda: 5", kernel1) cv2.imshow("lambda: 10", kernel2) cv2.imshow("lambda: 15", kernel3) cv2.imshow("lambda: 20", kernel4) # θ变化 kernel1 = cv2.getGaborKernel((311, 311), 10, 0, 10, 0.5, 0) kernel2 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.25, 10, 0.5) kernel3 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.5, 10, 0.5, 0) kernel4 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.75, 10, 0.5, 0) cv2.imshow("theta: 0", kernel1) cv2.imshow("theta: 45", kernel2) cv2.imshow("theta: 90", kernel3) cv2.imshow("theta: 135", kernel4) # ψ的变化 # σ的变化: kernel1 = cv2.getGaborKernel((311,...
IOTService 发布于 1周前 阅读 8

微信团队分享:视频图像的超分辨率技术原理和应用场景

本文试着讲述超分辨率技术的正确打开方式,浅谈视频图像的超分辨率技术的基本概念和应用场景等问题。
JackJiang- 发布于 3个月前 阅读 311 点赞 1

Python OpenCV实例:直方图计算(数学公式简单实现)

#coding:utf-8 ''' 直方图 ''' import cv2 import numpy as np import matplotlib.pyplot as plt ''' 计算RGB图像每个通道的直方图 ''' def cal_histgram_rgb(image): image_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) channel_r,channel_g,channel_b = cv2.split(image_rgb) r_hist = np.zeros((256,),np.int32).tolist() g_hist = np.zeros((256,),np.int32).tolist() b_hist = np.zeros((256,),np.int32).tolist() rows,cols,_ = image.shape for y in range(rows): for x in range(cols): r_hist[channel_r[y,x]] += 1 g_hist[channel_g[y,x]] += 1 b_hist[channel_b[y,x]] += 1 return r_hist,g_hist,b_hist def cal_hist_gray(image): gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = gray.shape hist_data = np.zeros((256,),np.int32).tolist() for y in range(rows): for x in range(cols): hist_data[gray[y,x]] += 1 return hist_data image = cv2.imread('datas/l1.jpg') hist_r,hist_g,hist_b = cal_histgra...
IOTService 发布于 4天前 阅读 6

Python OpenCV实例:图像灰度化(数学公式简单实现)

#coding:utf-8 ''' 图像灰度化 1、基本公式:Gray(i,j) = [R(i,j) + G(i,j) + B(i,j)] / 3 根据人眼对颜色的感知程度不同,衍生出第二个公式: Gray(i,j) = 0.299 * R(i,j) + 0.587 * G(i,j) + 0.114 * B(i,j) ''' import numpy as np import cv2 def grey_avg2(image): img_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) rows,cols,_ = image.shape dist = np.zeros((rows,cols),dtype=image.dtype) for y in range(rows): for x in range(cols): r,g,b = img_rgb[y,x] r = np.uint8(r * 0.299) g = np.uint8(g * 0.587) b = np.uint8(b * 0.114) rgb = np.uint8(r * 0.299 + b * 0.114 + g * 0.587) dist[y,x] = rgb return dist def grey_avg(image): img_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) rows,cols,_ = image.shape dist = np.zeros((rows,cols),dtype=image.dtype) for y in range(rows): for x in range(cols): avg = sum(image[y,x]) / 3 dist[y,x] = np.uint8(avg) ...
IOTService 发布于 4天前 阅读 10

Android上一种效果奇好的混音方法介绍

本文将对几种音频混音的方法进行详细的介绍和比较,读完之后你应该可以对混音有个基本的认识,针对不同情形知道应该采用哪种具体的处理方法了。
叶大侠 发布于 1个月前 阅读 61

OpenCV3 图像膨胀 dilate、腐蚀 erode、提取图像中的条形码 JAVA 实现

本文主要讲解 OpenCV3 图像膨胀 dilate、腐蚀 erode 的基本含义和函数参数。最后通过一个提取图像中的条形码的案例来演示膨胀、腐蚀在图像处理滤波中的作用。 本文针对的语言为 JAVA。其他语言类同
35Niu 发布于 4天前 阅读 13 打赏 1

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

《21克拉》迅雷[BD1080P高清中字]百度云网盘完整资源下载

“我想在你的眼睛里装一个独立的电表”。轻松搞笑的浪漫喜剧,铁公鸡与剁手族的爱情,同一屋檐下的,与浪漫绝缘的浪漫关系,真正的“穷开心”。笑料很有趣,情感刻画浅尝辄止,第三幕稍显啰嗦。人设最亮!郭京飞最大亮点,结巴抠门小哥太萌了。热巴真美,粉丝打卡!PS,郭京飞到底有多爱雷佳音   他毕业于上海戏剧学院,是迪丽热巴的学长,他是演员陆毅老婆的亲妹妹鲍莉的亲老公,简单来说就是陆毅的连襟。可以说他的人际关系很厉害了;他的个人成就也非常引人注目。饰演的角色总是很出色,能够把观众引入剧情中。    21克拉电影故事讲述拜金女刘佳音(迪丽热巴饰)破产后赖上了来租房子的抠门话剧演员王继伟(郭京飞饰),王继伟带着她蹭住在城市的角落并帮助她远离奢侈品重建生活。然而一场食物中毒的事故使得刘佳音不得已回到富豪前男友身边。一年后,两人菜场相遇,再续前缘。
天天撞墙 发布于 2天前 阅读 179

Python OpenCV实例:马赛克效果

#coding:utf-8 ''' 马赛克效果 ''' import cv2 import numpy as np point_start = {'x':0,'y':0} point_end = {'x':0,'y':0} rows = 0 cols = 0 selected = False def mosaic(selected_image,nsize=9): rows,cols,_ = selected_image.shape dist = selected_image.copy() # 划分小方块,每个小方块填充随机颜色 for y in range(0,rows,nsize): for x in range(0,cols,nsize): dist[y:y+nsize,x:x+nsize] = (np.random.randint(0,255),np.random.randint(0,255),np.random.randint(0,255)) return dist def mouse_handler(event,x,y,flag,params): global point_lft,point_rgt,selected if event == cv2.EVENT_LBUTTONDOWN: print('button down') point_start['x'] = x point_start['y'] = y if event == cv2.EVENT_LBUTTONUP: print('button up') point_end['x'] = x point_end['y'] = y selected = True src = cv2.imread('datas/images/f2.jpg') rows,cols,_ = src.shape src_cpy = src.copy() cv2.namedWindow("src") cv2.setMouseCallb...
IOTService 发布于 5天前 阅读 12

CVBS视频信号解析

https://blog.csdn.net/app_12062011/article/details/19475741/
DB_Terrill 发布于 15小时前 阅读 9

OpenCV3 识别图中表格-JAVA 实现

**关于 JAVA 学习 OpenCV 的内容,函数讲解。内容我均整理在 GitHubd的[OpenCV3-Study-JAVA](https://github.com/liuqi0725/OpenCV3-Study-JAVA)** # OpenCV 3 识别图中表格-Java 实现 ## 1. 说明 > 网上大部分资料,都是针对 C++的,python、java 的例子太少了。所以最近在做这个的时候,把他记录下来,也可以帮助一些人少走弯路。 **OpenCV 确实强大,强大到每一个方法,都能 google 到一篇专题文章,在写的过程中,参考了许多资料,最终完成了实现和注释。** 但是这仅仅是入门,找到表格后的利用才是后面的核心。比如: 1. 表格的 OCR 识别,识别表头,内容数据,形成结构化数据。 2. 图片按照顺序,转 Word文档或者保存为 html,这样就可以完成格式的转化,方便在 web 端查看,用户下载。 3. 其他利用... 本文仅针对效果较好的,无倾斜,背景干净的图片进行识别。复杂的情况会可能无法满足,需要进一步处理。仅仅是个入门。 ## 2. 开发环境 + macOS Sierra 10.12.4 + IntelliJ IDEA 2017 + Junit 4.12 + JDK 1.8 > 因为在 mac 下通过 brew 安装的 opencv ,所以包都是跟当前系统匹配的,安装目录也是一致的。 > Windows 下需要根据自己的系统环境,位数,修改代码的`lo...
35Niu 发布于 3个月前 阅读 244

Python将PDF文件转换成PNG的方案

目前最靠谱的是基于 mupdf 的 Python 绑定:  https://github.com/rk700/PyMuPDF  demo地址:  https://github.com/rk700/PyMuPDF/blob/master/demo/demo.py 安装: 到 https://pypi.org/project/PyMuPDF/#files 下载操作系统对应的安装文件 下载完成后,使用pip安装 然后就可以跑代码了.... 将PDF文件转换成PNG的代码: import fitz import sys doc = fitz.open('demo.pdf') for pg in range(doc.pageCount): page = doc[pg] zoom = int(100) rotate = int(0) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate) # create raster image of page (non-transparent) pm = page.getPixmap(matrix=trans, alpha=False) # write a PNG image of the page pm.writePNG('%s.png' % pg)  ...
乐_然 发布于 4天前 阅读 8

2018汇新杯全国新兴科技+互联网创新大赛

“汇新杯”全称--汇新杯”新兴科技+互联网创新大赛 大赛官网链接:首页 - 创成汇 大赛简介: 为深入贯彻落实“党的十九大”中提出的“加快建设创新型国家”与“建设现代化经济体系”国家战略,工信部工业文化发展中心与汇新云平台联合筹办本次大赛,大力发展新兴科技,用科技创新和产业模式的革新来促进行业领域的产业升级;推动大数据、人工智能、科技文化艺术、科技社会公益等前沿新兴科技与互联网+实体经济的深度融合;同时,通过大赛激发大学生、社会进步青年、科技人员、科研团体和中小微企业的创新创业热情,提升社会创业就业质量,构建公共文化新格局,传递社会公益力量,推动现代化经济体系建设。   此次大赛还将设立高校毕业生创业就业公益体系,利用大赛所融合的社会资源培养新时代大学生的创业就业能力。   大赛意义:  1、推动新兴科技、实体经济与互联网产业的融合,加快中国信息技术产业立足全球的步伐,为互联网产业革新做出应有的贡献;      2、通过大赛筛选出一批优质项目,以资金奖励与资源支持的方式进行扶持,培养出一批优质企业,更好地实现现代化经济体系的建设;      3、通过历届大赛的举办,不断挖掘优质企业,逐渐提升社会创业质量和就...
kaigege233 发布于 1周前 阅读 17

Python OpenCV实例:Gabor滤波器参数可视化

#coding:utf-8 ''' Gabor滤波器参数可视化 参考:https://blog.csdn.net/lhanchao/article/details/55006663 ''' import cv2 import numpy as np import math # λ(波长)变化 kernel1 = cv2.getGaborKernel((311,311),10,0,5,0.5,0) kernel2 = cv2.getGaborKernel((311,311),10,0,10,0.5,0) kernel3 = cv2.getGaborKernel((311,311),10,0,15,0.5,0) kernel4 = cv2.getGaborKernel((311,311),10,0,20,0.5,0) cv2.imshow("lambda: 5", kernel1) cv2.imshow("lambda: 10", kernel2) cv2.imshow("lambda: 15", kernel3) cv2.imshow("lambda: 20", kernel4) # θ变化 kernel1 = cv2.getGaborKernel((311, 311), 10, 0, 10, 0.5, 0) kernel2 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.25, 10, 0.5) kernel3 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.5, 10, 0.5, 0) kernel4 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.75, 10, 0.5, 0) cv2.imshow("theta: 0", kernel1) cv2.imshow("theta: 45", kernel2) cv2.imshow("theta: 90", kernel3) cv2.imshow("theta: 135", kernel4) # ψ的变化 # σ的变化: kernel1 = cv2.getGaborKernel((311,...
IOTService 发布于 1周前 阅读 8

OpenCV3 图像膨胀 dilate、腐蚀 erode、提取图像中的条形码 JAVA 实现

本文主要讲解 OpenCV3 图像膨胀 dilate、腐蚀 erode 的基本含义和函数参数。最后通过一个提取图像中的条形码的案例来演示膨胀、腐蚀在图像处理滤波中的作用。 本文针对的语言为 JAVA。其他语言类同
35Niu 发布于 4天前 阅读 13 打赏 1

MagicLeap SDK 安装指南

MagicLeap(https://www.magicleap.com/)是一个先进的混合现实(MR,Mixed Reality)头戴式设备,预计在2018年会发布开发者版。不过,在硬件设备推出之前,2018年3月已经发布了其开发SDK,下面我们来体验一下。
openthings 发布于 1周前 阅读 10

如何真正让小程序,WebRTC和APP互通连麦直播

2017年12月,微信小程序向开发者开放了实时音视频能力,给业内带来广阔的想象空间。连麦直播技术在2016年直播风口中成为视频直播的标配,然而只有在原生的APP上才能保障良好的用户体验。那时候,在微信小程序中无法连麦直播。微信小程序在去年12月宣布开放实时音视频能力,再加上去年6月苹果宣布将支持WebRTC,业内一下子千树万树梨花开,前途一片光明。连麦直播技术和微信小程序以及WebRTC能产生怎么样的化学作用?开发者在微信小程序或者浏览器WebRTC上实现连麦直播技术的时候,需要知道什么和考虑什么?   2018年3月17日星期六,在由即构科技主办的技术沙龙Zego Meetup北京站中,即构科技资深技术专家、架构师冼牛向参会者分享了即构团队在连麦直播技术和微信小程序结合的思考和实践。   当日,北京一早就下起来漫天纷飞的鹅毛大雪,却挡不住参会者学习和交流的热情,活动现场挤得满满一堂。瑞雪兆丰年,2018年对创业者来说,将会是一个丰收的好年头。     连麦直播的技术难点和解决思路   我们先回顾一下连麦互动直播技术,这个要从应用场景说起。   第一类应用场景就是最常见的视频直播中的多主播连麦场景。从2016年开始,从单向直播发展到两人连麦、三人连麦,...
即构科技ZEGO 发布于 3周前 阅读 89

Python OpenCV实例:图像直方图均衡化(数学公式简单实现)

#coding:utf-8 ''' 直方图均衡化 作用:通常用来增加图像局部对比度,尤其在图像的有用数据的对比度相当 接近时,通过直方图均衡化,图像的亮度可以更好地在直方图上分布 基本思想:把原始图像的直方图变换为均匀分布的形式,增加了像素 灰度值的动态范围,从而增强图像的整体对比度效果 算法实现步骤: 1、计算图像f的各个灰度级中像素出现的概率 p(i) = n(i) / n ,{i|0,1,...,L - 1} 其中:n(i)表示灰度级i出现的次数,L是图像中所有的灰度数,p实际上是图像的 直方图归一化到0~1范围内,如果把c作为对应p的累计概率函数,则定义为: i c(i) = ∑(p(x(j)) j=0 c是图像的累计归一化直方图 2、创建一个形式为 y = T(x)的变化,原始图像中的每个值就生产一个y,这样 y的累计概率函数形式就可以在所有值范围内进行线性化,转换公式为: y(i) = T(x(i)) = c(i) ''' import cv2 import numpy as np def hist_eq(image): img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = img_gray.shape gray_flat = img_gray.reshape((rows*cols,)) dist_flat = np.zeros_l...
IOTService 发布于 4天前 阅读 7

Python OpenCV实例:Schmid滤波

#coding:utf-8 ''' Schmid滤波 参考:https://blog.csdn.net/xiaowei_cqu/article/details/25131473 ''' import cv2 import numpy as np import math def schmid_kernel(tao,sigma): r = float(sigma / (4.0 * tao)) sigma2 = float(sigma * sigma) half_filter_size = 10 filter_size = half_filter_size * 2 + 1 schmid = np.zeros((filter_size,filter_size),np.float32) filter_sum = 0.0 for i in range(filter_size): #s = schmid[i,:] for j in range(filter_size): x = i - half_filter_size y = j - half_filter_size r = math.sqrt(x * x + y * y) tmp = 2.0 * math.pi * tao * r / sigma tmp2 = float(r * r / (2.0 * sigma2)) schmid[i,j] = math.cos(tmp) * math.exp(-tmp2) filter_sum += schmid[i,j] if np.abs(filter_sum - 0.0) < 1e-6: return schmid for i in range(filter_size): #s = schmid[i,:] for j in range(filter_size): schmid[i,j] /= fi...
IOTService 发布于 1周前 阅读 6

Python OpenCV实例:RGB图像底片效果

#coding:utf-8 ''' RGB图像底片效果 ''' import cv2 import numpy as np src = cv2.imread('datas/l1.jpg') dist = 255 - src cv2.imshow('src',src) cv2.imshow('dist',dist) cv2.waitKey() cv2.destroyAllWindows()  
IOTService 发布于 4天前 阅读 8

Android上一种效果奇好的混音方法介绍

本文将对几种音频混音的方法进行详细的介绍和比较,读完之后你应该可以对混音有个基本的认识,针对不同情形知道应该采用哪种具体的处理方法了。
叶大侠 发布于 1个月前 阅读 61

OpenCV 3.4 读懂 CvType ,类型构造说明 JAVA

java OpenCV 3.4 CvType 说明,读懂 CvType 的类型说明
35Niu 发布于 2周前 阅读 27

JAVA OCR Tesseract 识别代码实现

JAVA OCR Tesseract 识别代码实现,Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从从此尘封。 数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。
35Niu 发布于 3个月前 阅读 173

图片格式WebP在微信中的尝试

省钱,省带宽
刘少 发布于 1个月前 阅读 94

Python3 图片(jpg、bmp、png)转PDF

python 图片(jpg、bmp、png)转PDF,本人是Kindle的重度用户,喜欢使用Kindle看书。同时又喜欢看漫画,但是网上下载的漫画很多都是压缩包,解压后都是一张张图片。人工转换太累了,所以用 Python3 写了个转换的小程序,把图片转化为 PDF。
35Niu 发布于 5天前 阅读 8

Python实例:毛玻璃效果

#coding:utf-8 ''' 毛玻璃效果 ''' import cv2 import numpy as np src = cv2.imread('datas/images/f1.jpg') dst = np.zeros_like(src) rows,cols,_ = src.shape offsets = 5 random_num = 0 for y in range(rows - offsets): for x in range(cols - offsets): random_num = np.random.randint(0,offsets) dst[y,x] = src[y + random_num,x + random_num] cv2.imshow('src',src) cv2.imshow('dst',dst) cv2.waitKey() cv2.destroyAllWindows()  
IOTService 发布于 5天前 阅读 13

周高嵚:秀色直播的技术实践之路

3月17日,ZEGO Meetup 视频直播+的技术实践之道第二期在北京成功举办,现场吸引了满堂的音视频开发人员到场聆听。会上,如预期一样。   齐聚科技创始合伙人 王国良 即构科技资深技术专家和架构师 冼牛 秀色娱乐研发总监 周高嵚 数美联合创始人&CTO 梁堃   直播行业的4位技术大咖,和大家一起畅谈视频直播的技术与未来。   周高嵚老师结合秀色娱乐这几年的实践和我们分享了《秀色直播的技术实践之路》。   秀色直播的自我定位   秀色娱乐研发总监  周高嵚   首先,他分享了秀色娱乐对于直播行业的认识和自我定位。秀色娱乐认为直播行业具有海洋生态的典型特征:纬度越低,生物种类越多;纬度越高,生物种群越大。这里“生物种类”类比于直播的“内容类型和用户需求”,“生物种群”类比于直播的“内容影响力和用户规模”。      先说中纬度的这些直播平台的特征,首先是具备有一定的体量;其次是有着比较成熟的打法,不管是在产品研发、内容运营还是市场推广上,都有一套完整、成熟的体系。   高纬度的直播平台,肯定也是有成熟的打法的。除此之外,它们的体量更大,在平台的社会影响力、资本巨头的支持、流量入口等方面都有不可替代的优势。   低纬度则更...
即构科技ZEGO 发布于 3周前 阅读 7

CVBS视频信号解析

https://blog.csdn.net/app_12062011/article/details/19475741/
DB_Terrill 发布于 15小时前 阅读 9

matplotlib之normlize与colormap

## Normalize类 ```py class matplotlib.colors.Normalize(vmin=None, vmax=None, clip=False) ``` Normlize是用来把数据标准化(归一化)到[0,1]这个期间内,vmin是设置最小值, vmax是设置最大值,小于最小值就取最小值,大于最大值就取最大值。clip=True看文档的意思是如果超出了范围就设置为0或者1,离哪一个值近就设置为哪一个值。写了测试没有发现clip=False和clip=True有什么区别(这个可能还和colormap中的set_uper和set_under有关)。 如果没有设置vmin, vmax就是第一次出来数据集中的最大值和最小值。 下面和matplotlib.cm.ScalarMappable结合看一下不同的设置对数据标准化的影响。 ```py # -*- coding:utf-8 -*- import matplotlib.pyplot as plt import matplotlib as mpl from matplotlib.cm import ScalarMappable import matplotlib fig, ax = plt.subplots() data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # norm = mpl.colors.Normalize() # norm = mpl.colors.Normalize(-5,5,clip=False) # norm = mpl.colors.Normalize(1,5,clip=False) # norm = mpl.colors.Normalize(0,5,clip=False) norm = mpl.colors.Normalize(2,5,clip=True) # norm = mpl.colors.Normalize...
trayvon 发布于 4天前 阅读 3

Python将PDF文件转换成PNG的方案

目前最靠谱的是基于 mupdf 的 Python 绑定:  https://github.com/rk700/PyMuPDF  demo地址:  https://github.com/rk700/PyMuPDF/blob/master/demo/demo.py 安装: 到 https://pypi.org/project/PyMuPDF/#files 下载操作系统对应的安装文件 下载完成后,使用pip安装 然后就可以跑代码了.... 将PDF文件转换成PNG的代码: import fitz import sys doc = fitz.open('demo.pdf') for pg in range(doc.pageCount): page = doc[pg] zoom = int(100) rotate = int(0) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate) # create raster image of page (non-transparent) pm = page.getPixmap(matrix=trans, alpha=False) # write a PNG image of the page pm.writePNG('%s.png' % pg)  ...
乐_然 发布于 4天前 阅读 8

Python OpenCV实例:图像直方图均衡化(数学公式简单实现)

#coding:utf-8 ''' 直方图均衡化 作用:通常用来增加图像局部对比度,尤其在图像的有用数据的对比度相当 接近时,通过直方图均衡化,图像的亮度可以更好地在直方图上分布 基本思想:把原始图像的直方图变换为均匀分布的形式,增加了像素 灰度值的动态范围,从而增强图像的整体对比度效果 算法实现步骤: 1、计算图像f的各个灰度级中像素出现的概率 p(i) = n(i) / n ,{i|0,1,...,L - 1} 其中:n(i)表示灰度级i出现的次数,L是图像中所有的灰度数,p实际上是图像的 直方图归一化到0~1范围内,如果把c作为对应p的累计概率函数,则定义为: i c(i) = ∑(p(x(j)) j=0 c是图像的累计归一化直方图 2、创建一个形式为 y = T(x)的变化,原始图像中的每个值就生产一个y,这样 y的累计概率函数形式就可以在所有值范围内进行线性化,转换公式为: y(i) = T(x(i)) = c(i) ''' import cv2 import numpy as np def hist_eq(image): img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = img_gray.shape gray_flat = img_gray.reshape((rows*cols,)) dist_flat = np.zeros_l...
IOTService 发布于 4天前 阅读 7

Python OpenCV实例:直方图计算(数学公式简单实现)

#coding:utf-8 ''' 直方图 ''' import cv2 import numpy as np import matplotlib.pyplot as plt ''' 计算RGB图像每个通道的直方图 ''' def cal_histgram_rgb(image): image_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) channel_r,channel_g,channel_b = cv2.split(image_rgb) r_hist = np.zeros((256,),np.int32).tolist() g_hist = np.zeros((256,),np.int32).tolist() b_hist = np.zeros((256,),np.int32).tolist() rows,cols,_ = image.shape for y in range(rows): for x in range(cols): r_hist[channel_r[y,x]] += 1 g_hist[channel_g[y,x]] += 1 b_hist[channel_b[y,x]] += 1 return r_hist,g_hist,b_hist def cal_hist_gray(image): gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = gray.shape hist_data = np.zeros((256,),np.int32).tolist() for y in range(rows): for x in range(cols): hist_data[gray[y,x]] += 1 return hist_data image = cv2.imread('datas/l1.jpg') hist_r,hist_g,hist_b = cal_histgra...
IOTService 发布于 4天前 阅读 6

Python OpenCV实例:灰度图像线性运算

# coding:utf-8 ''' 灰度图像线性运算 公式:g(x,y) = p * f(x,y) + L 其中:f(x,y)为输入灰度图像像素值,g(x,y)为输出灰度图像像素值 参数:p = 1,L = 0,则复制图像; p > 1,则图像对比度减少 p = 1,L!=0,则图像变亮 p < 0,则图像变暗 ''' import cv2 import numpy as np def grey_linear_compute(image,p,l): img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = img_gray.shape dist = np.zeros_like(img_gray) for y in range(rows): for x in range(cols): pixel = img_gray[y,x] new_pixel = wise_element(p * pixel + l) dist[y,x] = new_pixel return dist def rgb_linear_compute(image,p,l): # img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) image_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) rows,cols,_ = image.shape dist = np.zeros_like(image) for y in range(rows): for x in range(cols): pixel = image_rgb[y,x] r = wise_element(p * pixel[0] + l) g = wise_eleme...
IOTService 发布于 4天前 阅读 3

Python OpenCV实例:图像灰度化(数学公式简单实现)

#coding:utf-8 ''' 图像灰度化 1、基本公式:Gray(i,j) = [R(i,j) + G(i,j) + B(i,j)] / 3 根据人眼对颜色的感知程度不同,衍生出第二个公式: Gray(i,j) = 0.299 * R(i,j) + 0.587 * G(i,j) + 0.114 * B(i,j) ''' import numpy as np import cv2 def grey_avg2(image): img_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) rows,cols,_ = image.shape dist = np.zeros((rows,cols),dtype=image.dtype) for y in range(rows): for x in range(cols): r,g,b = img_rgb[y,x] r = np.uint8(r * 0.299) g = np.uint8(g * 0.587) b = np.uint8(b * 0.114) rgb = np.uint8(r * 0.299 + b * 0.114 + g * 0.587) dist[y,x] = rgb return dist def grey_avg(image): img_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) rows,cols,_ = image.shape dist = np.zeros((rows,cols),dtype=image.dtype) for y in range(rows): for x in range(cols): avg = sum(image[y,x]) / 3 dist[y,x] = np.uint8(avg) ...
IOTService 发布于 4天前 阅读 10

Python OpenCV实例:图像灰度拉伸

#coding:utf-8 ''' 灰度拉伸 定义:灰度拉伸,也称对比度拉伸,是一种简单的线性点运算。作用:扩展图像的 直方图,使其充满整个灰度等级范围内 公式: g(x,y) = 255 / (B - A) * [f(x,y) - A], 其中,A = min[f(x,y)],最小灰度级;B = max[f(x,y)],最大灰度级; f(x,y)为输入图像,g(x,y)为输出图像 缺点:如果灰度图像中最小值A=0,最大值B=255,则图像没有什么改变 ''' import cv2 import numpy as np def grey_scale(image): img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) rows,cols = img_gray.shape flat_gray = img_gray.reshape((cols * rows,)).tolist() A = min(flat_gray) B = max(flat_gray) print('A = %d,B = %d' %(A,B)) output = np.uint8(255 / (B - A) * (img_gray - A) + 0.5) return output src = cv2.imread('datas/f4.jpg') result = grey_scale(src) cv2.imshow('src',cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)) cv2.imshow('result',result) cv2.waitKey() cv2.destroyAllWindows()  ...
IOTService 发布于 4天前 阅读 8

Python OpenCV实例:RGB图像底片效果

#coding:utf-8 ''' RGB图像底片效果 ''' import cv2 import numpy as np src = cv2.imread('datas/l1.jpg') dist = 255 - src cv2.imshow('src',src) cv2.imshow('dist',dist) cv2.waitKey() cv2.destroyAllWindows()  
IOTService 发布于 4天前 阅读 8

OpenCV3 图像膨胀 dilate、腐蚀 erode、提取图像中的条形码 JAVA 实现

本文主要讲解 OpenCV3 图像膨胀 dilate、腐蚀 erode 的基本含义和函数参数。最后通过一个提取图像中的条形码的案例来演示膨胀、腐蚀在图像处理滤波中的作用。 本文针对的语言为 JAVA。其他语言类同
35Niu 发布于 4天前 阅读 13 打赏 1

Python OpenCV实例:马赛克效果

#coding:utf-8 ''' 马赛克效果 ''' import cv2 import numpy as np point_start = {'x':0,'y':0} point_end = {'x':0,'y':0} rows = 0 cols = 0 selected = False def mosaic(selected_image,nsize=9): rows,cols,_ = selected_image.shape dist = selected_image.copy() # 划分小方块,每个小方块填充随机颜色 for y in range(0,rows,nsize): for x in range(0,cols,nsize): dist[y:y+nsize,x:x+nsize] = (np.random.randint(0,255),np.random.randint(0,255),np.random.randint(0,255)) return dist def mouse_handler(event,x,y,flag,params): global point_lft,point_rgt,selected if event == cv2.EVENT_LBUTTONDOWN: print('button down') point_start['x'] = x point_start['y'] = y if event == cv2.EVENT_LBUTTONUP: print('button up') point_end['x'] = x point_end['y'] = y selected = True src = cv2.imread('datas/images/f2.jpg') rows,cols,_ = src.shape src_cpy = src.copy() cv2.namedWindow("src") cv2.setMouseCallb...
IOTService 发布于 5天前 阅读 12

Python实例:毛玻璃效果

#coding:utf-8 ''' 毛玻璃效果 ''' import cv2 import numpy as np src = cv2.imread('datas/images/f1.jpg') dst = np.zeros_like(src) rows,cols,_ = src.shape offsets = 5 random_num = 0 for y in range(rows - offsets): for x in range(cols - offsets): random_num = np.random.randint(0,offsets) dst[y,x] = src[y + random_num,x + random_num] cv2.imshow('src',src) cv2.imshow('dst',dst) cv2.waitKey() cv2.destroyAllWindows()  
IOTService 发布于 5天前 阅读 13

Python3 图片(jpg、bmp、png)转PDF

python 图片(jpg、bmp、png)转PDF,本人是Kindle的重度用户,喜欢使用Kindle看书。同时又喜欢看漫画,但是网上下载的漫画很多都是压缩包,解压后都是一张张图片。人工转换太累了,所以用 Python3 写了个转换的小程序,把图片转化为 PDF。
35Niu 发布于 5天前 阅读 8

Python OpenCV实例:Gabor滤波器参数可视化

#coding:utf-8 ''' Gabor滤波器参数可视化 参考:https://blog.csdn.net/lhanchao/article/details/55006663 ''' import cv2 import numpy as np import math # λ(波长)变化 kernel1 = cv2.getGaborKernel((311,311),10,0,5,0.5,0) kernel2 = cv2.getGaborKernel((311,311),10,0,10,0.5,0) kernel3 = cv2.getGaborKernel((311,311),10,0,15,0.5,0) kernel4 = cv2.getGaborKernel((311,311),10,0,20,0.5,0) cv2.imshow("lambda: 5", kernel1) cv2.imshow("lambda: 10", kernel2) cv2.imshow("lambda: 15", kernel3) cv2.imshow("lambda: 20", kernel4) # θ变化 kernel1 = cv2.getGaborKernel((311, 311), 10, 0, 10, 0.5, 0) kernel2 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.25, 10, 0.5) kernel3 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.5, 10, 0.5, 0) kernel4 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.75, 10, 0.5, 0) cv2.imshow("theta: 0", kernel1) cv2.imshow("theta: 45", kernel2) cv2.imshow("theta: 90", kernel3) cv2.imshow("theta: 135", kernel4) # ψ的变化 # σ的变化: kernel1 = cv2.getGaborKernel((311,...
IOTService 发布于 1周前 阅读 8

Python OpenCV实例:Schmid滤波

#coding:utf-8 ''' Schmid滤波 参考:https://blog.csdn.net/xiaowei_cqu/article/details/25131473 ''' import cv2 import numpy as np import math def schmid_kernel(tao,sigma): r = float(sigma / (4.0 * tao)) sigma2 = float(sigma * sigma) half_filter_size = 10 filter_size = half_filter_size * 2 + 1 schmid = np.zeros((filter_size,filter_size),np.float32) filter_sum = 0.0 for i in range(filter_size): #s = schmid[i,:] for j in range(filter_size): x = i - half_filter_size y = j - half_filter_size r = math.sqrt(x * x + y * y) tmp = 2.0 * math.pi * tao * r / sigma tmp2 = float(r * r / (2.0 * sigma2)) schmid[i,j] = math.cos(tmp) * math.exp(-tmp2) filter_sum += schmid[i,j] if np.abs(filter_sum - 0.0) < 1e-6: return schmid for i in range(filter_size): #s = schmid[i,:] for j in range(filter_size): schmid[i,j] /= fi...
IOTService 发布于 1周前 阅读 6

Python OpenCV实例:图像重映射

#coding:utf-8 ''' 图像重映射 ''' import cv2 import numpy as np src = cv2.imread('datas/l1.jpg') rows,cols,channels = src.shape img_x = np.zeros((rows,cols),np.float32) img_y = np.zeros((rows,cols),np.float32) # 坐标映射 for y in range(rows): for x in range(cols): img_y[y,x] = rows - y img_x[y,x] = cols - x dst = cv2.remap(src,img_x,img_y,cv2.INTER_LINEAR) cv2.imshow('src',src) cv2.imshow('dst',dst) cv2.waitKey() cv2.destroyAllWindows()
IOTService 发布于 1周前 阅读 9

MagicLeap SDK 安装指南

MagicLeap(https://www.magicleap.com/)是一个先进的混合现实(MR,Mixed Reality)头戴式设备,预计在2018年会发布开发者版。不过,在硬件设备推出之前,2018年3月已经发布了其开发SDK,下面我们来体验一下。
openthings 发布于 1周前 阅读 10

A Handy Introduction to Cloud Optimized GeoTIFFs

A Handy Introduction to Cloud Optimized GeoTIFFs Since I started working at Planet, I kept hearing about Cloud Optimized GeoTIFFs (COGs). My colleague Chris Holmes even wrote a post explaining what they are and how they’re useful. I decided to implement a Go library to be able to work with COGs. Much of Planet’s satellite imagery is in the GeoTIFF format, including this nice image of Los Angeles from our February 2018 Global Basemap: An image of Los Angeles from Planet’s February 2018 Basemap. ©2018 Planet Labs Inc, CC BY-SA 4.0. As a first step to writing a library, I needed to learn about 1) Cloud Optimized GeoTIFFs, 2) GeoTIFFs in general, and 3) even more general than that: TIFFs. I’ve always found binary file formats intimidating — they just look like gibberish when you dump them into the console! But there’s logic in that gibberish. Here’s what you can gain from my exploration of this 30-year-old file format. What Even Is a TIFF? My first experience with TIFF...
openthings 发布于 1周前 阅读 5

First impressions of Benewake CE30 solid-state LIDAR

First impressions of Benewake CE30 solid-state LIDAR April 8, 2018 zlite The era of small, cheap (sub-$1,000) Lidar is upon us, but it’s still a bit in its teething stage. In this post, I’ll give some initial hands-on impressions of one of the first solid-state 3D (actually closer to 2.5D) Lidars to hit the market, the Benewake CE30 series, which has just been released. Unlike the other Lidars I’ve been using, such as the RP-Lidar A2/A3 series and (now discontinued) Scanse Sweep, which are rotating 2D Lidars (just viewing a thin horizontal disc around themselves), the CE30 has no moving parts and has both horizontal and (limited) vertical scanning (132° horizontal and 9° vertical), as well as an impressive 4m-30m range (depending on which version you get) as well as an excellent 20Hz refresh rate.  That’s perfect for small autonomous cars like ours — solid state means nothing to break in a crash, and having a vertical as well a horizontal sweep means that we can see ob...
openthings 发布于 1周前 阅读 3

ffmpeg项目导入eclipse

    最近想要学习一下ffmpeg,下载代码,配置环境,编译成功。一路下来到时没有问题,但是想要研读下代码的时候发现总归是有些不方便。     像我这样三流的程序员没有实在是需要一些类似ide的工具来方便跳转这样子。vim是不可能vim的,这辈子都不可能vim。只能用用ide这样子,ide的跳转又方便…………     幸运的是ffmpeg官方已经有介绍如何在eclipse上导入ffmpeg项目了,真是不错的消息。                                                 https://trac.ffmpeg.org/wiki/Eclipse     用visual studio似乎也可以,但是这就非官方了,而且需要将makefile的打包方式转成visual c++。
街角的小丑 发布于 2周前 阅读 9

数据可视化(三)基于 Graphviz 实现程序化绘图

- OmniGraffle 和 Graphviz - Why draw when you can code? - Graphviz 简介 - 最佳 Graphviz 实践(一):流程图、数据结构图、网络路径 Trace Route - 最佳 Graphviz 实践(二):复杂社会关系链分析(《红楼梦》、《权力的游戏》) - 最佳 Graphviz 实践(三):机器学习算法-决策树(Decision Tree)
RiboseYim 发布于 7个月前 阅读 2083 评论 5 点赞 6

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

opencv+python机读卡识别整合版

通过随意一张机读卡的照片,识别其中选择题题号,选项,以及相关数字识别
Digimon 发布于 9个月前 阅读 3518 评论 10 点赞 18

python数据可视化----绘制各种图形

1.环境 系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy 2.numpy库产生随机数几种方法 import numpy as np numpy.random rand(d0, d1, ..., dn) In [2]: x=np.random.rand(2,5) In [3]: x Out[3]: array([[ 0.84286554,  0.50007593,  0.66500549,  0.97387807,  0.03993009],        [ 0.46391661,  0.50717355,  0.21527461,  0.92692517,  0.2567891 ]]) randn(d0, d1, ..., dn)查询结果为标准正态分布 In [4]: x=np.random.randn(2,5) In [5]: x Out[5]: array([[-0.77195196,  0.26651203, -0.35045793, -0.0210377 ,  0.89749635],        [-0.20229338,  1.44852833, -0.10858996, -1.65034606, -0.39793635]]) randint(low,high,size) 生成low到high之间(半开区间 [low, high)),size个数据 In [6]: x=np.random.randint(1,8,4) In [7]: x Out[7]: array([4, 4, 2, 7]) random_integers(low,high,size) 生成low到high之间(闭区间 [low, high)),size个数据 In [10]: x=np.random.random_integers(2,10,5) In [11]: x Out[11]: array([7, 4, 5, 4, 2]) 3.散点图 x x轴 y y轴 s 圆点面积 c 颜色 marker 圆...
南寻 发布于 11个月前 阅读 3954 评论 5 点赞 8

提升网站用户体验—WebP 图片的高效使用

现代图像压缩技术对我们的生活方式影响很大。数码相机能将上千张高质量图片存储到一张内存卡里、智能手机可以与邻近设备快速分享高分辨率的图片、网站与手机等移动设备能快速展示各种富媒体。然而,如果图片只能以最原始的格式进行存储的话,以上所有都只是纸上空谈。
OneAPM蓝海讯通 发布于 2年前 阅读 5037 评论 14 点赞 11

使用ffmpeg命令实现本地摄像头的远程访问——非编程纯命令

1 ffserver命令 fserver是一个音频和视频的流式服务器。它通过在启动时读入的配置文件完成配置,不指定时用默认的/etc/ffserver.conf文件。ffserver接受一些或者FFM流作为输入然后通过RTP/RTSP/HTTP推流。ffserver监听在配置文件中指定的端口,在配置文件中输入的流叫做feed,每一个都是用<Feed>的节来指定的。每一个feed可以有不同格式的的不同输出流,每一个在配置文件中用<Stream>节来指定。ffserver是通过推送用ffmpeg编码的流来工作的。ffserver担当一个HTTPserver的角色,接收来自ffmpeg的获得发布流的POST请求,并且用流媒体内容来服务HTTP/RTSP客户端的GET请求。要搞清楚什么是feed,什么是stream。 1.1 Feed是什么 feed是由ffmpeg创建的FFM流,并且发送到ffserver正在监听的端口上。每一个feed是通过一个唯一的名字来识别的,这个名字关联到发布在ffserver上的资源的名字,并且是通过配置文件里面的<Feed>节来完成配置的。feed发布的URL是以下面的形式给出的:  http://<ffserver_ip_address>:<http_port>/<feed_name> 其中,ffserver_ip_address是ffserver安装的主机的IP地址,http_port是HTTP服务器的端口号,feed_name是相关的定义在配置文件中的feed的名字。...
zhangyujsj 发布于 3年前 阅读 5911 评论 1 点赞 6

基于opencv的摄像头脸部识别抓取及格式储存(python)

opencv作为优秀的视觉处理在动态图像处理上也是很不错的,本次主要基于Opencv抓取视频,然后保存为avi,同时进行脸部识别作业,
Kanonpy 发布于 3年前 阅读 5691 评论 17 点赞 9

Opencv实时眼球追踪,解脱的你双手,让你的眼睛写代码!

Opencv实时眼球追踪,追踪率82.5%-98%,目前这个是第一个版本,只是基本上上实现了眼球追踪,后面会加上GPU处理提高效率,将目前的face分类器,增加face特征算法以提高face查准率!使实时眼球追踪更加稳定,效率更高,追踪率更高稳定些,适应更多场景!
地瓜儿 发布于 4年前 阅读 23053 评论 104 点赞 35 打赏 1

基于HTML5实现的Heatmap热图3D应用

实现Heatmap的开源js库比较出名的就是 heatmapjs ,该框架发展了2年多,作者Patrick Wied最近决定在保持开源的基础上,提供有偿的商业支持服务,这是好事,地球上绝大部分开源项目作者搞个barely可用的初级版本后,就多年不见更新了,而真正能实际上线使用的产品哪有不需要持续完善、增强可扩展性以及提供特殊定制服务的,考虑到作者这两年已无偿投了这么多(Over the last 2 years, I devoted more than 500 hours of work to improving heatmap.js to make it a truly great l...
xhload3d 发布于 4年前 阅读 6211 评论 35 点赞 15

Jfreechart绘制漂亮的图表

JfreeChart美化,使用JfreeChart创建柱状图,折线图,饼图,堆积柱状图,时间序列图,二维Y轴坐标图,JfreeChart工具类
扁-哥 发布于 4年前 阅读 15468 评论 48 点赞 77

关于手势轮廓的提取及手势跟踪和识别的关键部分

手势的提取是将手势从较为复杂的环境中提取出来,在设计中我们采用肤色提取手势轮廓的方法,经过实验,在大多数的情况下都能取得较为满意的效果。对于手势的跟踪则采取预测和重定位的形式,我采用了更高级的跟踪算法,基于卡拉曼滤波的粒子滤波算法。对于手势的识别我们采用了先对指尖进行定位的方式,该方法准确度高且基本没有错误,另一个方法就是采用提取特征向量通过支持向量机的形式对手势进行分类,但是对环境的要求要高些。
zengxiangwei 发布于 4年前 阅读 2729 评论 4 点赞 13

Inkpad绘图原理浅析

分析了Inkpad的动态拖曳绘图和静态图形更新机制,讨论了其绘图优点和可改进点,编写了其交互绘图序列图和核心类的关系图,可供进一步学习研究用。
云贵高原 发布于 4年前 阅读 3334 评论 7 点赞 6

PyCairo指南--简介

PyCairo简介 这是PyCairo指南。这份指南将基于Python语言,教给你Cairo 2D库基本的和一些高级的主题。在大多数例子中,我们将会使用Python GTK后端来产生我们的输出。本指南中所用到的那些图片可以在此处下载。   计算机图形 有两种不同的计算机图形。向量图和光栅图。光栅图以一个像素的集合来表示图片。向量图使用几何元素,比如点,直线,曲线或者多边形来表示图片。这些元素使用数学方程式来创建。 两种计算机图形类型都有优点和缺点。向量图相对于光栅图的优点是: 占用空间小 具有无限放大的能力 移动,缩放,填充或者旋转不会降低一幅图片的质量 Cairo Cairo是一个用于创建2D向量图的库。它是用C程序语言写的。已经有一些到其他计算机语言的绑定出现了。Python,Perl,C++,C#,Java。Cairo是一个多平台的库,可以工作于Linux,BSDs和OSX上。 Cairo支持多种后端。后端是用于显示所创建的图形的输出设备。   X Window System Win32 GDI Mac OS X Quartz PNG PDF PostScript SVG 这意味着,我们可以使用Cairo库在Linux/BSDs,Windows,OSX的窗口中绘制图形,同时也可以使用这个库来创建PNG图像,PDF文件,PostScript文件和SVG文件。 我们可以对比cairo库和Windows O...
WolfCS 发布于 5年前 阅读 4031 评论 2 点赞 1
顶部