「深度学习福利」大神带你进阶工程师,立即查看>>>
A comprehensive set of APIs for hardware accelerated video encode and decode on Windows and Linux.
NVIDIA GeForce Now is made possible by leveraging NVENC in the datacenter and streaming the result to end clients
Quick Links: Download GPU Support Matrix Using Video Codec SDK FFmpeg/libav Resources
NVEncode Features Performance
NVDecode Features Performance
The Video Codec SDK includes a complete set of APIs, samples and documentation for hardware accelerated video encode and decode on Windows and Linux.
The SDK consists of two hardware acceleration interfaces: NVENCODE API for video encode acceleration NVDECODE API for video decode acceleration (formerly called NVCUVID API)
NVIDIA GPUs contain one or more hardware-based decoder and encoder(s) (separate from the CUDA cores) which provides fully-accelerated hardware-based video decoding and encoding for several popular codecs. With decoding/encoding offloaded, the graphics engine and the CPU are free for other operations.
GPU hardware accelerator engines for video decoding (referred to as NVDEC ) and video encoding (referred to as NVENC ) support faster than real-time video processing which makes them suitable to be used for transcoding applications, in addition to video playback.
* Diagram represents support for the NVIDIA Turing GPU family
** 4:2:2 is not natively supported on HW
*** Support is codec dependent
Architecture | x64 and ppc64le |
---|
Operating System | Windows 7, 8, 10, Server 2008 R2, Server 2012, and Linux Dependencies | Development Environment NVENCODE API - NVIDIA Quadro, Tesla, GRID or GeForce products with Kepler, Maxwell, Pascal and Turing generation GPUs. |
NVDECODE API - NVIDIA Quadro, Tesla, GRID or GeForce products with Fermi, Kepler, Maxwell, Pascal and Turing generation GPUs.
GPU Support Matrix
NVIDIA Linux display driver 418.30 or newer
NVIDIA Windows display driver 418.81 or newer
DirectX SDK (Windows only) CUDA 10.0 Toolkit
Windows: Visual Studio 2010/2013/2015 Linux: gcc 4.8 or higher What's new with Turing GPUs and Video Codec SDK 9.0 Up to 3x Decode throughput with multiple decoders on professional cards (Quadro & Tesla) Higher Quality Encoding - H.264 & H.265 (Refer to devblog for more details) Higher encoding efficiency (15% lower bitrate than Pascal) HEVC B-frames support HEVC 4:4:4 decoding support Decode For a full list of GPUs, encode formats and number of encoders and decoders , please refer to the: GPU Support Matrix . Encode Get NVIDIA Video Codec SDK If you are looking to make use of the dedicated decoding/encoding hardware on your GPU in an existing application you can leverage the integration already available in the FFmpeg/libav . FFmpeg/libav should be used for evaluation or quick integration, but it may not provide control over every encoder parameter. NVDECODE and NVENCODE APIs should be used for low-level granular control over various encode/decode parameters and if you want to directly tap into the hardware decoder/encoder. This access is available through the Video Codec SDK. For application users
Cross-platform solution to record, convert and stream audio and video. Includes NVIDIA Video Hardware Acceleration Hardware acceleration for most popular video framework Leverages FFmpeg’s Audio codec, stream muxing, and RTP protocols Available for Windows, Linux You can now use FFMPEG to accelerate video encoding and decoding using NVENC and NVDEC, respectively. Turing support coming soon Learn more about FFMPEG For application developers Download Video Codec SDK 9.0 To download, you must be a member of NVIDIA Developer - DesignWorks . By clicking the "Agree & Download" button below, you are confirming that you have read and agree to be bound by the SOFTWARE DEVELOPER KITS, SAMPLES AND TOOLS LICENSE AGREEMENT for use of the SDK package. The download will begin immediately after clicking on the "Agree & Download" button below. All supported OS and architectures Agree & Download Partners Read more Read more Read more Read more Read more Read more Read more Read more \ Read more Read more Read more Read more Read more Read more Key Features of Video Codec SDK NVENC - Hardware-Accelerated Video Encoding NVIDIA GPUs - beginning with the Kepler generation - contain a hardware-based encoder (referred to as NVENC) which provides fully-accelerated hardware-based video encoding and is independent of graphics performance. With complete encoding (which is computationally complex) offloaded to NVENC, the graphics engine and the CPU are free for other operations. For example, in a game recording scenario, encoding being completely offloaded to NVENC makes the graphics engine bandwidth fully available for game rendering. GPU H.264 (AVCHD) YUV 4:2:0 H.264 (AVCHD) YUV 4:4:4 H.264 (AVCHD) LOSSLESS H.265 (HEVC) YUV 4:2:0 H.265 (HEVC) YUV 4:4:4 H.265 (HEVC) LOSSLESS MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. Kepler | Maxwell (1st Gen)* | Maxwell (2nd Gen) | Maxwell (GM206) | Pascal | Volta | Turing 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 N/A | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit N/A | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 N/A | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit N/A | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 N/A | N/A | 8-bit | 8-bit | 10-bit | 10-bit | 10-bit N/A | N/A | 4096 x 4096 | 4096 x 4096 | 8192 x 8192** | 8192 x 8192 | 8192 x 8192 N/A | N/A | N/A | 8-bit | 10-bit | 10-bit | 10-bit N/A | N/A | N/A | 4096 x 4096 | 8192 x 8192** | 8192 x 8192 | 8192 x 8192 N/A | N/A | N/A | 8-bit | 10-bit | 10-bit | 10-bit N/A | N/A | N/A | 4096 x 4096 | 8192 x 8192** | 8192 x 8192 | 8192 x 8192 * Except GM108 and GP108 (not supported) ** Except GP100 (is limited to 4K resolution) For a full list of GPUs, encode formats and number of encoders and decoders , please refer to the: GPU Support Matrix . Performance: 5X Increase over x264(CPU) * Performance represents measured average performance and quality of different classes of videos (camcorder, gaming, screen, synthetic, and telepresence). Performance may vary based on OS and software versions, and motherboard configuration. More Performance Results Performance represents an approximation of max performance and may vary based on GPU clock speed, OS, software versions, and motherboard configuration. NVDEC - Hardware-Accelerated Video Decoding NVIDIA GPUs contain a hardware-based decoder (referred to as NVDEC) which provides fully-accelerated hardware-based video decoding for several popular codecs. With complete decoding offloaded to NVDEC the graphics engine and the CPU are free for other operations. NVDEC supports much faster than real-time decoding which makes it suitable to be used for transcoding applications, in addition to video playback applications. NVDECODE API enables software developers to configure this dedicated hardware video decoder. This dedicated accelerator supports hardware-accelerated decoding of the following video codecs on Windows and Linux platforms: MPEG-2, VC-1, H.264 (AVCHD), H.265 (HEVC), VP8, VP9 (see table below for codec support for each GPU generation). GPU *H.265 (HEVC) 4:4:4 H.265 (HEVC) 4:2:0 H.264 (AVCHD) 4:2:0 VP9 VP8 MPEG-2 VC-1 MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. MAX Color MAX Res. Kepler | Maxwell (1st Gen)* | Maxwell (2nd Gen) | Maxwell (GM206) | Pascal | Volta | Turing N/A | N/A | N/A | N/A | N/A | N/A | 12-bit N/A | N/A | N/A | N/A | N/A | N/A | 8192 x 8192 N/A | N/A | N/A | 10-bit | 12-bit | 12-bit | 12-bit N/A | N/A | N/A | 4096 x 2304 | 8192 x 8192** | 8192 x 8192 | 8192 x 8192 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 | 4096 x 4096 N/A | N/A | N/A | 8-bit | 12-bit**** | 12-bit | 12-bit N/A | N/A | N/A | 4096 x 2304 | 8192 x 8192** | 8192 x 8192 | 8192 x 8192 N/A | N/A | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit N/A | N/A | 4096 x 4096 | 4096 x 4096 | 4096 x 4096*** | 4096 x 4096 | 4096 x 4096 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit 4080 x 4080 | 4080 x 4080 | 4080 x 4080 | 4080 x 4080 | 4080 x 4080 | 4080 x 4080 | 4080 x 4080 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit | 8-bit 2048 x 1024 | 2048 x 1024 | 2048 x 1024 | 2048 x 1024 | 2048 x 1024 | 2048 x 1024 | 2048 x 1024 * Except GM108 (not supported) ** Max resolution support is limited to selected Pascal chips *** VP8 decode support is limited to selected Pascal chips **** VP9 10/12 bit decode support is limited to select Pascal chips For a full list of GPUs, decode formats and number of encoders and decoders , please see the available GPU Support Matrix . Performance For convenience, NVDECODE API documentation and sample applications are also included in the CUDA Toolkit , in addition to the Video Codec SDK. Note: For Video Codec SDK 7.0 and later, NVCUVID has been renamed to NVDECODE API. Developer Forums Our forum community is where Developers can ask questions, share experiences and participate in discussions with NVIDIA and other experts in the field. Check out the forums here . Legacy Versions Older legacy versions of NVENC SDK and Video Codec SDK are available here . Additional Resources BLOG - Turing H.264 Video Encoding Speed and Quality BLOG - New GeForce-Optimized OBS and RTX Encoder Enables Pro-Quality Broadcasting on a Single PC SOFTWARE DEVELOPER KITS, SAMPLES AND TOOLS LICENSE AGREEMENT CUDA Toolkit FFmpeg/libav Video Test Sources ( YUV RAW 1080p Files - Heavy Hand video input ) Streamline live streaming system reference design 「深度学习福利」大神带你进阶工程师,立即查看>>> 作 / 李哲文 文章来源于网络,如有侵权请告知,我们及时予以处理 投稿及建议:后台或邮箱发送给 阿文,免费为您上广告 图片仅作展示,无任何商业用途 ‘P’、‘K’ ‘P’ 720P,1080P等,表示的是“视频像素的总行数”,比如720P表示视频有720行的像素,而1080P则表示视频总共有1080行像素数,1080P分辨率的摄像机通常像素数是1920*1080.‘P’本身表示的是“逐行扫描”,是Progressive的缩写,相对于隔行扫描。 ‘K’ 2K,4K等,表示的是“视频像素的总列数”,如4K,表示的是视频有4000列像素数,具体是3840*4096列。4K分辨率的摄像机通常像素数是3840*2160或4096*2160. 关注 户外商显广告机平台、 关注 户外老湿--哲文、 1080P 过去曾使用垂直分辨率来描述分辨率。因为1080P代表的是垂直分辨率。而几乎所有的高清显示屏的纵横比都是1.78:(即16*9,又名“宽屏”),这意味着其水平分辨率为1920像素(即1920*1080)。 因此,1080P并不等于“1K”。正如超高清相当于4K一样,1080P相当于2K。也就是说,1920*1080这一分辨率非常接近DCI所描述的2K标准。即便如此,大多数人往往不把1080P叫做2K,他们称之为1080P或全高清。 720P的像素数量大约为1080P的一半。 对比图片: 4K 从技术上讲,“4K”意味着水平分辨率为4096像素。这是数字电源倡导联盟所提出的分辨率。由于电源的纵横比不同,矩形屏幕的确切形状决定了电源的纵横比,所以其垂直分辨率并没有具体制定。 因此,严格从技术上来说,“4K”不是超高清,超高清的分辨率为3840*2160.两者之间的像素区别仅13%,基本上看不到多大差异。绝大多数人都更喜欢“4K”这一名称表示超高清。8K的道理跟4K一样。 对比图片: 「深度学习福利」大神带你进阶工程师,立即查看>>> 1.第一步:抠图,找自动抠图的网站吧 https://www.remove.bg,把图片上传上去,会把背景图去掉,然后下载下来 2、第二步: 用photoshop打开,新建个图层,选择图层,然后(alt+delete) 填入前景色, 前景色选择白色。 3.第三步:图片大小调整,点击图像-图像大小,调整像素比如一寸是:358*441 4.第四步:图像存储为,设置图像清晰度,缩小大小,如果这样不行,可以通过 Ctrl+Alt+Shift+S,然后再如图选择来更改文件体积大小在20k以内即可。
「深度学习福利」大神带你进阶工程师,立即查看>>> 原文地址: https://github.com/jackyxinli/cross-compile arm-none-eabi-gcc (ARM architecture,no vendor,not target an operating system,complies with the ARM EABI) 用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数,比如fork(2),他使用的是 newlib 这个专用于嵌入式系统的C库。 arm-none-linux-gnueabi-gcc & arm-linux-gnu-gcc (ARM architecture, no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI) 主要用于基于ARM架构的Linux系统,可用于编译 ARM 架构的 u-boot、Linux内核、linux应用等。arm-none-linux-gnueabi基于GCC,使用Glibc库,经过 Codesourcery 公司优化过推出的编译器。arm-none-linux-gnueabi-xxx 交叉编译工具的浮点运算非常优秀。一般ARM9、ARM11、Cortex-A 内核,带有 Linux 操作系统的会用到。 Establish environment of cross compile on fedora 29 or upper # dnf install arm-none-eabi-gcc # dnf install arm-none-eabi-newlib # dnf install gcc-arm-linux-gnu # dnf install glibc-arm-linux-gnu # cd ~ # vim .bashrc C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/arm-linux-gnu/include export C_INCLUDE_PATH # source .bashrc # cd ~ # curl http://ffmpeg.org/releases/ffmpeg-4.1.4.tar.gz # tar -zxf ffmpeg-4.1.4.tar.gz # cd ffmpeg-4.1.4 # ./configure --prefix=/root/arm/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=arm-linux-gnu- --cc=arm-linux-gnu-gcc --enable-pthreads --disable-doc --disable-debug --disable-x86asm --disable-static --enable-shared Establish environment of cross compile on ubuntu 18.04 or upper # apt install gcc-arm-none-eabi # apt install arm-linux-gnueabi # apt install arm-linux-gnueabihf # cd ~ # curl http://ffmpeg.org/releases/ffmpeg-4.1.4.tar.gz # tar -zxf ffmpeg-4.1.4.tar.gz # cd ffmpeg-4.1.4 # ./configure --prefix=/root/arm/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=arm-linux-gnueabihf- --cc=arm-linux-gnueabihf-gcc --enable-pthreads --disable-doc --disable-debug --disable-x86asm --disable-static --enable-shared 「深度学习福利」大神带你进阶工程师,立即查看>>> TheBrain 可以让你捕捉到你处理的文件背后的想法,并更有效地组织信息。同时能够将所有信息通过一个又一个的节点进行联系,最终形成一个杂而不乱的网状结构。从头开始设计,让您捕获您的想法和信息在一个网络的联想,匹配您的思维方式。 >>最新版TheBrain体验下载 TheBrain功能亮点: 数字思维 整合分散的资源 随时访问 快速搜索 强大的文档管理功能 一目了然的图形 TheBrain 公司非常喜欢不定期的举行 网络研讨会 ,也可以称之为网络课程,专门由其公司的高层技术人员为大家带来有主题的讨论会。下面小编给大家整理了2019最新的网络研讨会视频合集,希望大家能够更加了解TheBrain的实用性,帮助大家最大程度的开发我们的大脑思维。 ①TheBrain 202网络研讨会:改善和进化你的大脑 【点击查看完整视频】 具体主题包括: 改变思想关系 创建子类别和干预思想 大量链接,取消链接,忘记和删除想法 复制和粘贴思想 使用多个大脑 创建特定的思想名称和思想世系 为其他上下文添加图标和思想类型 ②【TheBrain网络研讨会】视觉故事——用作者的大脑释放你的创造力 【点击查看完整视频】 具体主题包括: 捕捉创意并策划创意内容 可视化故事元素和参考 通过视觉头脑风暴克服作家的障碍 为编写项目创建研究指南 管理多个版本的文件并导出到Word ③【TheBrain网络研讨会】在TeamBrain中共享多人力量 【点击查看完整视频】 具体主题包括: 通过安全的云服务同步大脑,实现多台机器访问或许多用户 在线为大量受众创建和发布您的大脑 管理多个用户的大脑,添加组成员和跟踪更改 可视化业务流程和想法,以便每个人都能看到关键策略 通过集体知识网络节省时间并减少会议 ④【TheBrain网络研讨会】在Mac、iPhone和iPad上进行大图组织和任务管理 【点击查看完整视频】 具体主题包括: 可视化关键想法和项目 组织和相互关联的文件和网页 跨平台工作,并在多台机器上同步 在你的iPhone和iPad上创造新的大脑 通过集体知识网络节省时间并减少会议 集成了Apple Mail、地址簿和iCal ⑤【TheBrain网络研讨会】使用TheBrain如何更加直观的管理文件 【点击查看完整视频】 具体主题包括: 将文件、网页和文件夹整合到你的大脑中 跟踪和附加多个版本的文档并将其保存到您的大脑中 交叉引用和链接相关文档,便于发现 把文件从你的大脑中移进移出,做笔记 根据概念和文件类型搜索和过滤信息 -- 持续更新中 -- 「深度学习福利」大神带你进阶工程师,立即查看>>> adobe官网上下载flash player: https://get.adobe.com/cn/flashplayer/otherversions/ 下载后解压: tar xf flash_player_npapi_linux.x86_64.tar.gz 将解压的 usr/目录文件拷贝到 /usr下: cp -r usr/* /usr 再将libflashplayer.so 拷贝到浏览器插件的目录下: cp libflashplayer.so /usr/lib/mozilla/plugins/ 重新打开Firefox,播放视频:
「深度学习福利」大神带你进阶工程师,立即查看>>>
以上这些需求简直就是设计师的噩梦! 设计入行门槛高,且各人审美标准差异较大,在设计中普遍存在着一些共同性的难题。比如说设计时才发现素材不够、没有统一标准导致设计结果客户不满意,特别是有些“高级”的设计根本不能引起消费者共鸣等,都为日常的设计工作带来了不小的挑战。 大量设计所需的人力成本、机械重复的操作成本、反复修改的沟通成本、购买字体和素材版权成本等各种费用的消耗,无形之中也增加了企业的负担,同时,也带来一些侵权问题和风险。 日前,京东云联合京东零售用户体验设计部,推出专业的智能设计服务,为解决企业运营过程中设计效率、品质、一致性问题提供解决方案。整合京东自身在设计、大数据、AI技术等领域的专业能力,搭建智能设计引擎,帮助企业提升效率、节省成本、优化输出,并为数据化投放与运营提供能力支持。 用户将需要解析的内容传入,由智能设计引擎对输入内容进行识别与分析,之后通过智能设计处理器进行处理,完成用户需要的操作,最终产出设计结果。替代设计师人工设计,手动操作,将设计结果规范化、精细化、自动化,稳定输出。 当前,智能设计服务在京东云官网以API接口形式,提供服务,快来看看有哪些实用功能,能够帮助企业快速提高设计效率,降低设计成本吧! 智能抠图服务是为图片主体抠除背景的智能服务。基于机器学习、图像智能识别技术,可大幅度提升图像处理效率,降低人工成本。 1、智能抠图功能特点 通过机器智能识别图像,不用人工进行加工处理,只需将需要处理的图片上传,极速自动输出无背景抠图结果。划分区域,零门槛、低成本,无需使用设计软件,抠图成功率高,基于京东海量商品图片训练机器不断学习优化,整体抠图尤其针对电商商品图片抠图成功率行业领先。 2、智能抠图应用场景 不论是自己拍摄还是从网上寻找素材,都需要进行一定的处理,才可以使用到图片设计当中。使用智能抠图功能,可以轻松快捷地将图片主体与背景分离,生成透明底图片。同时,可针对特定场景进行图片优化,需根据业务情况更换背景、强调重点、区分层级,可通过智能抠图服务将图片主体与背景分离,由机器批量快速地完成原始素材的处理。 智能抠图服务目前服务于京东SKU图库,对京东商品库进⾏批量处理,建⽴商品透明底图素材池,⽬前已累计商品素材1600+万张,供京东各业务使用。
智能配色服务是由单个配色方案智能延展为多个配色结果的实用功能。 基于图像智能识别技术,对图像颜色进行精准识别和替换,可用性强,可快速衍生多样的设计风格,大大拓展图片的使用范围,有效降低人工制作成本。 1、智能配色产品优势 对设计对象进行智能颜色识别、灰度计算,快速输出大批量不同风格的配色结果。 简单易用 :以机器工作代替人力,精准高效、方便易用。 海量方案 :经过素材的灵活组合,填色结果的数量是人工制作所远不能及的。 可用性强 :系统提前预设配色方案,已历经多次演算优化,结果美观可靠。 多场景应用 :覆盖电商、零售、物流、媒体等多种业务场景。 支持定制化 :可根据用户需求定制化开发。 2、智能配色应用场景 一张图片可延展出丰富的配色结果,用户可根据图片要传递的内容,挑选最恰当的配色结果。无需人工试色,直观感受不同配色效果,辅助决策,选出最优结果。 智能配色功能可完美划分填色区域,支持自定义图片配色,可满足用户对图片进行特定颜色的批量调整,以使所有图片配色统一。 风格识别服务是能够读取图片信息,实现按照风格进行智能归类管理的功能。 由深度学习引擎打造,通过构建样本数据集训练机器,形成风格预测模型,根据模型,可从图片信息识别出风格特征元素,自动判别图片设计风格。 1、风格识别功能特点 识别并解析用户传输的任意图片,自动划分区域,根据风格预测模型智能识别图片风格特征元素。根据特征元素,将图片按风格分类,将图片的设计风格返回给用户。 识别结果准确度高,基于京东海量图片数据,针对电商场景下的广告图数据进行测试,风格预测结果的准确率已超过83%。图片识别速度快,任意样式无差别准确识别,即时返回识别结果,代替人工查看样式、判断思考过程,摒除主观判断差异,高效统一。 2、风格识别应用场景 最大的应用场景为图片的智能管理,和与用户智能匹配。可应用于图片的智能读取及标签化分类,轻松实现批量管理,无需进行人工分类。
「深度学习福利」大神带你进阶工程师,立即查看>>> 前言 个人比较喜欢momentum插件的图片壁纸,比较清爽的世界各地的风景画吧。这个插件的图片来源也是来源于其他网站Instagram、Flickr、unsplash、500px等。(不知道怎么弄过来的) windows本地图片地址 windows如果安装了chrome的momentum插件,本地文件夹缓存数据,例如: C: 「深度学习福利」大神带你进阶工程师,立即查看>>>
断点设计、双色搭配、高光设置、填色错位 渐变色使用、半透明装饰、统一的阴影
拟物图标icon手机应用3D仿物图标APP2.5D设计UI素材PSD源文件图片
「深度学习福利」大神带你进阶工程师,立即查看>>> 标定 import cv2 import numpy as np import glob criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) w,h = 9,6 objp = np.zeros((w * h, 3), np.float32) objp[:, :2] = np.mgrid[0:w, 0:h].T.reshape(-1, 2) obj_points = [] img_points = [] images = glob.glob('待标定图像') for fname in images: img = cv2.imread(fname) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) size = gray.shape[::-1] ret, corners = cv2.findChessboardCorners(gray, (w, h), None) if ret == True: cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria) obj_points.append(objp) img_points.append(corners) cv2.drawChessboardCorners(img, (w, h), corners, ret) cv2.imwrite('标定图.png', img) ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(obj_points, img_points, gray.shape[::-1], None, None) dist = np.delete(dist, [4]) #当畸变不夸张时舍去K3 矫正 img2 = cv2.imread('待矫正图') h, w = img2.shape[:2] newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w, h), 1, (w, h)) dst = cv2.undistort(img2, mtx, dist, None, newcameramtx) cv2.imwrite('矫正图.png', dst)
「深度学习福利」大神带你进阶工程师,立即查看>>> 之前做个设计,现在从事IT,脑子里面关于RGB,RGBA,CMY,CMYK,YUV,但是具体理论还是不扎实。若干年前之前写过《 水煮RGB与CMYK色彩模型—色彩与光学相关物理理论浅叙 》《 三色视者与四色视者身后的理论基础:色彩原理 》 光学三原色与印刷三间色 光学的三原色 : 红(Red)、绿(Green)、蓝(Blue) (RGB)。 印刷的三原色 : 青(Cyan)、品红(Magenta)、黄(Yellow) (CMYK) 印刷色是光照射在印刷物上, 然后折射到人眼的光的合成,所以印刷色会比光学暗淡,因为印刷色是经过印刷物过滤过光合成的,自然会比较相对暗淡。 C(100) +M(100) +Y(100) = 黑色(100,100,100) 可见黑色就是青色、品与黄色之和,但是这三种颜色混成的黑色不够纯,所以印刷学就引进了K(Black)黑色,因为B已经被Blue占用,所以黑色就只好用引文字母黑色的最后一个字母K,所以: C(100) +M(100) +Y(100) + K(100) 等价于 C(0) +M(0) + Y(0) + K(100) = 黑色 光学三原色如何得到白色, 配色如下: R(0) + G(0) + B(0)+A(255) = C(0) +M(0) + Y(0) + K(100) = 黑色 联想下,是不是可见黑色就是没有颜色(0,0,0)? 我们显示屏一般采用RGB,印刷采用CMY。RGB/CMY色彩模型是通过不同量的(红/绿/蓝)||(青/品红/黄)来描述一个颜色的,对人类来说很不直观,难以理解。他们对机器很友好的色彩模式,但并不够人性化,难以直观理解,因为我们对色彩的认识往往是:什么颜色?鲜艳不鲜艳?亮还是暗? 基于RGB改进的HSL/HSV色彩模型 HSL 模式和 HSB ( HSV ) 都是基于 RGB 的,是作为一个更方便友好的方法创建出来的 。HSB和HSV是是一样的,只是叫法不一样而已 HSL :色相H(Hue) ,饱和度S(Saturation),亮度L(Lightness) HSB :色相H(Hue) ,饱和度S(Saturation),明度B(Brightness) 色相H(Hue) 控制颜色种类,取值0-360°的圆心角。需要记住色相环上的六大主色: 红黄绿青蓝洋红 (即RGB夹CMY呈60°分布)用作基本参照 饱和度S(Saturation) 控制颜色的纯度。取值0-100%。数值越大,颜色中的灰色越少,颜色越鲜艳,呈现一种从灰度到纯色的变化 亮度L(Lightness) 和 明度B(Brightness) 控制色彩的明暗变化,取值0-100%。 HSB与HSB其中的S与L有着不同的表述。这里暂且忽略,推荐阅读: 色彩空间中的 HSL、HSV、HSB 有什么区别- AK23的回答 - 知乎 Lab颜色模型 Lab颜色模型是由国际照明委员会 (CIE:International Commission on illumination) 制定的一种色彩模式。 L*代表明度,取值0~100 a*代表从绿色到红色的分量 ,取值-128~127 b*代表从蓝色到黄色的分量,取值-128~127 这样规定是根据人类的视觉原理,灵长类动物的视觉都有两条通道:红绿通道和蓝黄通道,大多数动物最多只有一条通道,如果有人缺失其中一条,就是我们所说的色盲。 其实,我们生活中所说的颜色和光谱中可见光的颜色并不是严格对等的。 实际上,存在两种颜色的定义 : 自然界真实存在的颜色 :严格对应波长,实际上所谓的不同的颜色就是可见光电磁波的不同波长(或者能量不同)的光子。比如波长为550nm的光子、波长为700 nm的光子... 人眼感知的颜色 :人眼对整个可见光谱的感知。因为人眼视网膜上,主要负责感知色彩的视锥细胞对不同波长的光子的感知并不相同,存在一个相应的范围 而人眼对不同波长的感知能力可以用下图中的白色曲线来表示。白线对应的值越高,表示人眼对此波段的光子的感知越灵敏。人眼把S那条线感受到的光子都认知为蓝色、把M那天线的认知为绿色、把L那天线对应的认知为红色。 实际上,上述的三种颜色:蓝、绿和红色(RGB)正是我们所知道的三原色。所以,事实上,你只能看到三种颜色:蓝绿红!等等……事实不是这样啊!我们的世界明明丰富多次啊??你怎么在这里瞎扯?其实,你看到的多种多样的颜色是这三种颜色组合在一起的结果。这三种颜色好比一个三维空间里的三个坐标,你把他们不同程度的组合起来,就可以形成各种各样的颜色。实际上,他们形成了一个3D的色彩空间,如下图,空间中每一个点都代表了一种颜色。 所以你看到的颜色其实就是人眼在对蓝绿红这三种光子的测量,然后线性的叠加而已!其实我们的RGB显示器就是运用了这个原理,显示出不同的色彩。所以 ,很多颜色并不是真正的一个颜色而已,它代表的是这个物体发出的光中,蓝绿红这三种光的相对强度的组合 !! 这些美丽的颜色中很大一部分其实只是你的脑补而已…… [不过,因为人眼视锥细胞的响应也存在饱和,也就是说蓝、绿和红不可能无限的亮,因此,人类的感知只是这个三维空间里的一个有限区域 。这也是CIE定义出他们最有名的CIE色表的来源。因为人类对色彩的感知是有限的,且我们实际上对实际的光谱更感兴趣,所以,根据人眼对色彩的响应曲线,我们可以把上面的三维空间变换到二维(如下图) 而这二维的平面涵盖了人眼能看到的所有颜色(注意,实际上上述的三维色彩空间里有很大一部分是人眼无法识别的颜色,因为人眼视锥细胞的感光能力是有限的!),于是就形成了下面的CIE图,此图是1976年的修改标准,该图最早由1931年提出。
而,通过数学运算,不难算出真实光谱,比如450nm的光应该什么颜色的。你只需要把450nm处三种颜色的视锥细胞的响应叠加起来就行了。通过这样的方法,你就可以计算出一条曲线,它可以近似代表自然界中真实的色彩。此外,你还可以计算出色温曲线。如果你还记得黑体这个概念的话,不同温度会给出不同的能谱分布,如下图,不同的能谱分布中,蓝、绿和红色的相对强度不同。 那么同样通过数学的运算,你可以计算出不同温度黑体在人眼中所反映出的“颜色”。就是图中间的那条曲线。太阳的温度是~6000K,于是我们可以对应出来,太阳是白色(偏一点点黄)。]然而,还需要提到的是,上面说的是物体发出的光,比如太阳(黄白色),还有你的显示器。那么绿叶的颜色又是怎么回事?白纸呢?白种人为什么那么白?黑人为什么那么黑?因为他们不发光。所以,其实他们的颜色只是他们反射的光中蓝绿红这三种光的相对强度的组合!!因此,对于反光的物体来说,光源的颜色覆盖很重要。这也是为什么我们使用日光灯或者白光灯的原因。试想一下,如果你用绿光灯,你还能看到丰富多彩的衣服和图画吗?值得一提的是,汉语里的紫色其实是一个比较模糊的概念,既可以对英语英语里的violet,也可以是purple。严格来说,violet更接近比蓝波波长更短的颜色,也就是红和绿都很少,而蓝色也很弱的情形。相当于黑中加了点蓝的感觉。而紫色则是纯粹的脑补大红+大蓝而已。不管则样,紫色并不是真实的颜色。那么violet呢?其实它也并不是真实的,我们再来看一副更精确的视锥细胞响应曲线 或者为了更加严谨,我们来看看论文里实际的测量曲线: 注意到了吗?实际上在比蓝光中较短的波段红色视锥细胞的响应也比较突出,大概是0.1,而蓝色大概是0.7-0.8。因此,你看到的violet也是蓝+红组合的结果。 一句话总结,我们大致可以理解为, 颜色是自然界的可见光波段的光谱在人眼中的一个线性投影。我们可以更具CIE,把人眼中看到的“颜色”,还原到自然界“真实的颜色” 。 自然界中任何一点色都可以在Lab空间中表达出来,它的色彩空间比RGB空间还要大( 有毛用 ?超过了RGB色域屏幕显示不了,超过了CMYK的色域打印不了,超过了视觉色域看都看不了!高精度下lab偶尔可以作为颜色模式的中间标尺,但是这和你一点关系都没有。这纯粹是数学公式定义的结果——色域很大纯粹是因为定义范围内有许多多余的颜色)。不过对PS用户来说:LAB最大的优势就是调色,最常用的也是调色。明度和色彩信息因为是分离的,可以允许做出更多的操作,更精准的调整。也可以通简单的调整就出做一些别的模式非常复杂的操作才能达到的效果。比如照片过暴导致高光细节丢失严重,就可以用LAB修补高光部分的色彩信息。 这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。由于Lab的色彩空间要比RGB模式和CMYK模式的色彩空间大。 注: Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。PNG是一种使用RGBA的图像格式。 注:一般两个色彩空间,找一个变换矩阵,可以快速转换。 原文链接: 色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV - 计算机视觉与计算机图形学的图像处理所涉及的基础理论知识 - 周陆军的个人网站 ,原文阅读体验可能更好,文章更新只在源站进行,如有不妥之处,请留言告知,多谢 参考文章: 色彩空间表示与转换 https://zhuanlan.zhihu.com/p/24281841 「深度学习福利」大神带你进阶工程师,立即查看>>> 准备Raspbmc 为了安装Raspbmc,需要准备几件东西。第一件是一张新的SD卡——之前的那张要用在普通环境下;SD卡事实上就是树莓派的硬盘,所以如果过度写入,就只能重新刷镜像才能修复了,大概就等同于重装系统。没必要用一张新的SD卡,但是推荐用新的。一张microSD再加上一个SD卡套也是可以的。 无论你选择哪种方案,卡都要先格式化,于是在进行下一步前,把卡插到读卡器中,连接到你的PC上。 然后,下载 Raspbmc安装器 。下载完成后,解压缩并运行installer.exe文件。 你的SD卡应该会在安装窗口中显示出来,选中SD卡那一项前面的小方格,然后点击安装,软件就会把Raspbmc安装到SD卡上面。当“恭喜”信息出现的时候,就可以把卡拔下来,插到你的树莓派上面去了。 设置Raspbmc 把安装有Raspbmc的SD装到树莓派里,打开设备,确保设备和外网是连通的,因为在安装过程中,还有一部分数据要从网上下载,所以说连网是必须的。 可以用树莓派上的XBMC干什么 Raspbmc是流行的媒体中心软件XBMC移植到树莓派上的产物。所以用户界面喝功能大体上是相同的。 图片,视频以及音乐都有各自的菜单,有小软件可以收到三个地方的天气情况。媒体源需要手动添加,可以用插件管理器安装插件,有很多插件可供选择。 「深度学习福利」大神带你进阶工程师,立即查看>>> windows7 windows10专业版非常纯净的,是从官网下载的 网盘只有win7 微云盘有win7也有win10 我的百度网盘链接: https://pan.baidu.com/s/10EwNm6dp0sBDbqY7ktXMaQ 提取码: 2evk 或者去我的微云里下载,这个是不需要提取码的。win7链接:https://share.weiyun.com/5LXxdYt win10链接:https://share.weiyun.com/5BsNDaa --------------------- 作者:WinkJie 来源:CSDN 原文:https://blog.csdn.net/qq_36662459/article/details/90697765 版权声明:本文为博主原创文章,转载请附上博文链接! 「深度学习福利」大神带你进阶工程师,立即查看>>> 这个社会,只要你说你是搞技术的,领导就以为你啥技术都会!我就纳闷,为啥领导你病了,会找内科医生去看病,不会找错外科医生?为啥领导你小孩病了,你会找妇幼医院,不会找错兽医院??! 言归正传! 收到命令,要把MP4视频文件刻录成DVD可播放文件! 网上的转码以及刻录软件很多只负责生成VOB文件,到完成任务为止未找到自动生成并刻录DVD的软件或方法,如有大虾知道请赐教! 详细方法 步骤一 把MP4文件通过格式工厂转换为VOB文件 步骤二 DVD所需的IFO、BUP文件需要另外的软件 IfoEdit 下载: http://www.ifoedit.com/index.html 软件使用方法: 1.首先将vob文件名改为常规DVD文件格式,即 VST_01_1.VOB VST_01_2.VOB VST_01_3.VOB ...... 依此而下 2.打开IfoEdit程序 3.点开界面下方第一排第四个按钮create IFOs(创建IFOs) 4.在1st VOB of 的地方打开VOB文件 如果有多个VOB文件时,选择最后一个 5.勾选same as source,然后点击ok 6.正在生成 7.回到VOB所在的文件夹,IFO、BUP文件已经生成好了。 步骤三 放入刻录光盘,双击光盘盘符,进入到虚拟盘,使用windows自带的刻录软件,把上述生成的所有ifo、bup、vob文件拷贝到这里,最后右键刻录到光盘,完成 Reference: https://zhidao.baidu.com/question/149893015.html 「深度学习福利」大神带你进阶工程师,立即查看>>> 今天发现一个超级好用,并且免费的logo创建器, launchaco.com ,之前用过 shapefactory.co ,也很好用,但是贵的令人发指,一个做好的logo,需要44美金。而今天发现了 launchaco.com ,感觉发现了一块宝藏,忍不住想分享。好了,现在来复盘一下整个使用流程。 以我最近正在开发的产品: 找主机 zhaozhuji.info为例 开始 打开 launchaco.com 官网,选择 logo 菜单,点击 Create Your Logo for Free 产品取名字 注意只支持英文字母,不支持中文,这是唯一的瑕疵。而本身这个产品是建立在人工智能上的,中文不仅字体不支持,也不支持含义联想。 选字体 没三种选一种字体,会让你选择四五次,它是期望发现你的字体爱好! 选择主题色 下图中列出了6中不同的主题色,每一种都代表不同的含义,并且明确标出了,请注意看图的下面。 这里我选择第一种, Friendly, Loyal, & Strong ,代表着友好、尊贵、强大。 每种主题色都给你配置好了3种色调,并且标明了适用的含义,是不是很方便啦! 这里我们选择第三种: Peaceful, Limitless, Tranquil, & Friendly 选择logo 选择3个你喜欢的logo! 说真的,这个网站的logo真的超级棒,每个我都很喜欢! 选择搭配 最后,系统会根据你的选择,给出一系列智能搭配。 保存 搭配中,随便选一个,然后编辑,然后点击右上角保存! 下载 右上角箭头下载后,你会得到png和svg很多资源,想要的都有了,如下图: 总结 有没有感觉很方便?关键是免费啊,基本类似的logo maker都收费,难得发现个免费的。后续我会继续发布有助于独立开发者产品开发的工具,关注我公众号及时提醒。
「深度学习福利」大神带你进阶工程师,立即查看>>> >**简评:**渐变是通过两种或多种不同的色彩来绘制一个元素,同时在颜色的交界处进行衰减变化的一种设计。从拟物到扁平再到渐变,人们慢慢发现它能创造出从未有过的一种色彩感觉 —— 独特、现代和清爽。(本文译者 @Aceyclee ) 很长一段时间以来,设计界都不怎么待见「渐变」,这还得拜 90 年代的 PowerPoint 所赐,毕竟那时候的渐变是这样的: 然而时过境迁,今天你打开 Dribbble 或者 Behance,可能会看到不少使用渐变的设计。本文将会分享如何在设计中使用「渐变」的实用技巧。 ▎为什么我们突然爱上了渐变? 想回答这个问题,我们需要重返 2014。 2014 年是扁平设计流行的元年。这一年,Google 发布了 Material Design,Apple 也用扁平 UI 更新了 macOS。那年的扁平设计让人感到兴奋,特别是和拟物设计对比的时候。 但是扁平设计的局限性也是显而易见的,其中最大的一个局限是 —— 设计师能够使用的颜色和样式大大减少,几乎不到 15 种颜色可用于扁平设计。 由此,设计师们开始尝试「渐变」: 它给设计师带来了更大的创作自由。扁平设计中单一的颜色扼杀了设计的潜力,而渐变为无限可能打开了大门。通过混合颜色的手段,设计师们可以创造出更丰富的视觉样式。 渐变还给设计引入了深度和维度,解决了扁平设计中一切都「太平」了的问题。 ▎渐变让人惊喜 比如说,渐变能做出更大胆的表达。 渐变创造出了一种意想不到的效果,即使像应用图标这样微小的元素,也别有一番风味: 又或者,渐变能突出某些元素。 一个好的用户体验,往往能引导用户完成产品流程,而精心的设计有助于让用户下意识地进行下一步。比方说让页面某些部分视觉效果更强烈,从而让用户更关注这部分。 👇下面是 Mixpanel 的主页,插图是主页的一大元素,而渐变的背景则引导了用户去关注镇部分。 ▎六种创造渐变的技巧 1. 让我们先看看渐变的基础类型 渐变有几种基础类型,他们都会有一个中心起点,颜色从这里开始,然后逐渐融入其他颜色。 a. 线性 线性渐变是一种依直线过渡的色带,颜色从一种颜色平滑过渡到下一种。 b. 径向 径向渐变是从中心点开始往外辐射,设计师可以指定中心点的位置和渐变的大小。 c. 锥形渐变 如下图,你可以在 Adobe Illustrator 中创建锥形渐变 2. 注意渐变颜色的选取 不是所有的颜色都能很好地相互配合,如果用互补色进行渐变,看起来就不是很好: 红色到绿色的渐变,看起来脏兮兮的: 创建渐变的时候,最好使用相近的颜色: 或者相同颜色的不同深度: 3. 渐变过程中注意平滑过渡 理想情况下,不应该让用户注意到一种颜色流入到另一种颜色中,颜色的过渡应该非常顺畅。 👇下面这个是反例,你能很明显地看到分隔两种颜色的色带,这就给人一种很突兀的过渡: 平滑应该是这样的: 4. 情绪的传达 颜色能唤起情绪的反应,我们可以利用这个属性,在更深的层次上和用户进行联系。 仔细思考你希望用户与产品互动时感受到什么。 例如,在一种比较高能量的氛围中,可以采用红橙渐变: 而在轻松的氛围,不妨试试蓝色渐变: 5. 不要忘记颜色对比 无论何时都要注意设计的可读性,而这就是对比的功用。
6. 一些趁手的工具 工欲善其事必先利其器,除了 Adobe Illustrator ,还有其他工具可以用于创建渐变效果: https://uxpro.cc/toolbox/visual-design/colors/ ,这里就不一一介绍了。 > 原文链接: Gradients in UI Design > 推荐阅读: Chrome 小恐龙背后的故事 | 设计师专访
「深度学习福利」大神带你进阶工程师,立即查看>>> QTcreator官网。专注于界面开发: qt creator 相关文档,做好qt简简单单。 http://www.qter.org/portal.php?mod=list&catid=18 「深度学习福利」大神带你进阶工程师,立即查看>>> 打开菜单中工具--->页面信息---->媒体 「深度学习福利」大神带你进阶工程师,立即查看>>> 近年来 思维导图 在工作与生活中的运用十分的火爆,它是一种能帮助我们学习和记忆的工具。 曾经有人做过一项调查,发现思维导图使用领域前10名分别是:待办事宜、准备演示、做笔记、解决问题、项目计划、做决定、知识管理、项目管理、个人思考以及写作,其中近一半的人认为思维导图对自己最大的帮助就是理清思路。 在思维导图中,不仅仅只有文字,图片、链接、标注、有趣的样式等等都能够加强我们的记忆。对于人的大脑,我们一升大概只能运用5-10%的大脑潜能。而思维导图是一种较为形象、具体、直观的图,对比抽象的语言,它更易于理解和记忆。 目前,市场上思维导图工具非常丰富,小编经过整理发现国内非常受欢迎的一款是 XMind,而对于国外软件, TheBrain 则是非常良心的推荐。 重点来啦!TheBrain vs XMind ,哪款才是你的菜? ★界面风格 对于一部分人来说,外表的赏心悦目往往更能引发对工作的兴趣和动力,一张有趣、色彩丰富的思维导图往往更能受到我们的喜爱。对于大多数国人来说, XMind 或许更符合我们的审美观, TheBrain 简单单调的界面或许会让人感到乏味。 TheBrain 默认的背景是深蓝色的,仿佛是无限的宇宙,又或者是一个人闭上眼睛后看到深邃的脑海。 XMind 则拥有多种配色组合和丰富的主题元素。 TheBrain | XMind | ★ 产品属性 虽然两款都是思维导图工具,但其实两者也具有自己的特色: XMind是平面的 树状图形 ,TheBrain更像立体的 动态网络图 。 XMind是从 中心发散 的,TheBrain几乎是 去中心化 的。 XMind更倾向于树状结构,当思想过多时就会使图形变得很复杂,反而会造成困扰。尽管跨组织之间的链接现在也能够实现,但并不直观,在操作上比TheBrain更为复杂,返回父级时需一级一级的进行。 >>下载体验XMind最新版 XMind效果示例图 TheBrain能够管理各个节点的布局,还有节点快速搜索,可以很轻松地联系到思维导图里的任何节点。同时,TheBrain能够管理节点的布局和节点的隐藏,这样在做每一个子任务的时候,都能专注于这一个子任务,不会在视觉上陷入其他的任务视图。 >>下载体验TheBrain最新版 TheBrain效果图 ★ 适用场景 TheBrain 无论界面还是功能都非常简单,每个“想法”的切换都以平滑的动态效果进行不用担心想法过多后反而影响思绪,更加适用于个人的知识整理、数据的整理、复杂的关系网分析、庞大的族谱、图书整理等等内容繁杂、思维跳跃的工作。 XMind 无论是丰富的主题元素、多元的配色组合,还是演示、幻灯片模式的展现,以及输出的图好比组织有序的“知识点”,可以很容易阅读,都表明它更加的适合工作汇报、方案策划、idea共享、事件分析等等。 ★ 案例对比 这里以 个人的大脑思维整理 为例, TheBrain 可以无限的点击标签进入子级,同时右侧的备注内容非常清晰; XMind 则近乎是一张平面的图片,虽然同样能跳转子级,但按钮不够明显,有着明显的区别。 TheBrain示例: XMind示例: ★适用平台 两者都适用于 Windows 平台和 MacOS 平台,同时对于手机端 iOS和Android平台也同步推出,随时随地都可以进行思想的交流和工作的整理。 你是不是思维导图的忠实fans呢? 你觉得哪款工具更好用呢? 欢迎评论留言参与讨论哦~或者加入TheBrain中文交流QQ群( 273298874 ),一起分享你的good idea! 「深度学习福利」大神带你进阶工程师,立即查看>>> 简介 随着客户的增加,mp4文件播放的弊端也日益凸显,主要集中在两个方面 当视频时长比较长的时候,mp4的关键帧元素往往很大,需要加载很长时间才能开始播放,网速不好的情况缓冲加载就要20多秒的时间,客户早已急不可耐。 当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,如果这个视频文件是500M则会请求服务器下载500M文件,是1G则会不停下载1G,给服务器硬盘和宽带造成很大浪费和压力。 为了解决上述问题,公司打算使用m3u8格式来替代mp4格式。 m3u8是苹果公司开发的一项新型播放格式,这种播放格式支持目前市面的windows、androis、ios设备主流的浏览器,同样的视频文件既可以在flash环境播放,又能在无flash的html5环境播放,它的优势还不止于此,它可以实现多种码率在不同网速下的自动切换,网速好自动切换高清晰度视频,网速慢自动播放低清晰度文件,还可以实现流加密(视频文件本身加密)、分段下载播放、任意时间点拖拽播放、随机视频文件广告插入等等优势,所以公司打算是用m3u8格式作为视频格式。 mp4转码m3u8 如果视频不为mp4格式,需先将视频转码为mp4,可使用如下命令进行转换 ffmpeg -i 本地视频地址 -y -c:v libx264 -strict -2 转换视频.mp4 将mp4格式转换为ts格式 ffmpeg -y -i 本地视频.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 转换视频.ts 将ts文件进行切片 ffmpeg -i 本地视频.ts -c copy -map 0 -f segment -segment_list 视频索引.m3u8 -segment_time 5 前缀-%03d.ts 其中segment 就是切片,-segment_time表示隔几秒进行切一个文件,上面命令是隔5s,你也可以调整成更大的参数。 转换好的文件 跨域问题 在跨域的网站根目录放 crossdomain.xml 文件,下面是允许所有的网站(一般不采取这样的方式,只是方便调试)均可以跨越访问资源配置如下: 限制指定网站访问,可以参考百度 https://www.baidu.com/crossdomain.xml 配置 如果文件存储在第三方平台上,比如阿里云OSS,就把 crossdomain.xml 放在 bucket 根目录下 播放 这里推荐使用第三方h5播放器 ckplayer ,集成完成后看下视频请求 可以看到视频先加载的 m3u8 格式的索引文件,然后开始加载视频,跟据所以文件依次加载 abc000.ts 、 abc001.ts 、 abc002.ts ,这时候拖动视频,视频开始加载 abc011.ts 、 abc012.ts 、 abc013.ts 跳过了4~10的文件,这就是 m3u8 的好处,按需加载 「深度学习福利」大神带你进阶工程师,立即查看>>> 随着计算机网络技术和物联网的快速发展,在互联网上经常会传输一些敏感数据,比如购物账户、密码等,对于企业来说,网络安全也同样与业务数据安全息息相关。据统计,目前有大约有50%的安全攻击,会通过SSL通道进行,因此传统的很多安全设备将会面临一个很严重的挑战,由此SSL加解密方案的重要性可见一斑。 如今国内很多的网站、企业已经开始向全站SSL迈进。一些成立时间已经非常长的网站,已经使用了全站SSL。而从行业分布来看,目前国内采用全站SSL加解密的主要还是一些大型电商以及互联网技术使用率高的网站。与其同时,面对无处不在的SSL趋势,只有当互联网上的所有流量都受到加密保护的,才有可能是一个安全的网络环境,那么优秀的SSL加解密解决方案的终极目标就是实现整个流量的加密保护。 SSL加解密方案备受关注 随着业务的发展,基于性能扩容或功能增强等需求,企业将不断的购买各种各样的安全设备。那么这些新设备如果也需要做SSL解密的话,并不是一件轻松简单的事情。因此我们先来探讨下SSL加解密方案的两个方向,一个是入站方向,另一个则是出站反向,这两个方向所使用的技术以及所解决的用户需求场景是不同的。这里以F5推出的方案为例,了解一下F5在这两个方向上的SSL加解密方案有什么优势之处。 F5的产品包含了很多的功能模块,提供了很完美的一个安全性的考虑。在F5平台基础上,F5本身作为SSL解密的一个战略控制点,插入了很多的安全模块。F5在入向SSL加解密方面的优势主要在于:提供高性能的运营平台,同时提供了一个可扩展的架构,可以轻松扩展传统硬件设备以及硬件的安全结构。另外一方面,F5提供了一个可扩展的可编程的制度,使得我们可以充分的在数据通道上面去控制数据流量。 F5部署SSL加解密安全解决方案 整体来看,F5推出的SSL加解密安全解决方案可管理 SSL,为用户提供跨整个安全堆栈的更高性能和效率。同时灵活的部署模式可轻松集成到最复杂的体系结构中,集中处理 SSL 解密和加密,并在用户的整个安全基础架构中提供最新的加密技术。因此,F5的SSL加解密方案是非常值得企业关注的,使业务、数据、流量的安全性都能得到极大的保障。 「深度学习福利」大神带你进阶工程师,立即查看>>> | 导语 6月29日,北京东直门亚朵S酒店,云+社区邀您参加《音视频及融合通信技术》沙龙活动,深度探讨音视频及融合通信技术的发展及实践,领略前沿,共创价值。 数字多媒体技术的不断发展对音视频及融合通信技术提出了怎样的要求呢? 本期沙龙将邀请腾讯技术专家针对腾讯云音视频及融合通信产品的技术全进行面剖析,围绕最新的低延迟技术、全新的商业直播方案等主题为大家带来纯干货的技术分享,带你走进前沿的音视频及融合通信技术落地实践。 活动信息 活动指南 时间 2019-06-29 周六 13:30-18:00 地点 北京东直门亚朵S酒店(北京市朝阳区香河园路左家庄15号院) 公共交通: 1,乘坐地铁2号线/13号线,东直门地铁站下车,步行约1.2公里 2,乘坐536/131/404/916路等,在左家庄公交站下车,步行约200米 报名渠道 扫描上方二维码 报名 现场奖品 活动现场设置了抽奖环节 大奖将在活动结束后抽出 腾讯定制礼品等你来拿! 一等奖:1名 猫王收音机 MW-R 二等奖:2名 索爱(soaiy)T2 蓝牙耳机无线 三等奖: 3名 罗技(Logitech)K380 键盘 鼓励奖:24名 当当网提供的技术图书 我们还为大家准备了腾讯云公仔 数量有限,先到先得哦! 技术交流 扫描上方二维码添加小助手微信 可提前进群与讲师及参会嘉宾互动交流 直播 如您无法参与现场, 我们也为您准备了线上直播, 直播地址请留意后续的公众号文章,敬请期待~ 往期活动 「深度学习福利」大神带你进阶工程师,立即查看>>> 最近工作需要,看了一下小波变换方面的东西,用python实现了一个简单的小波变换类,将来可以用在工作中。 简单说几句原理,小波变换类似于傅里叶变换,都是把函数用一组正交基函数展开,选取不同的基函数给出不同的变换。例如傅里叶变换,选择的是sin和cos,或者exp(ikx)这种复指数函数;而小波变换,选取基函数的方式更加灵活,可以根据要处理的数据的特点(比如某一段上信息量比较多),在不同尺度上采用不同的频宽来对已知信号进行分解,从而尽可能保留多一点信息,同时又避免了原始傅里叶变换的大计算量。以下计算采用的是haar基,它把函数分为2段(A1和B1,但第一次不分),对第一段内相邻的2个采样点进行变换(只考虑A1),变换矩阵为 sqrt(0.5) sqrt(0.5) sqrt(0.5) -sqrt(0.5) 变换完之后,再把第一段(A1)分为两段,同样对相邻的点进行变换,直到无法再分。 下面直接上代码 Wavelet.py import math class wave: def __init__(self): M_SQRT1_2 = math.sqrt(0.5) self.h1 = [M_SQRT1_2, M_SQRT1_2] self.g1 = [M_SQRT1_2, -M_SQRT1_2] self.h2 = [M_SQRT1_2, M_SQRT1_2] self.g2 = [M_SQRT1_2, -M_SQRT1_2] self.nc = 2 self.offset = 0 def __del__(self): return class Wavelet: def __init__(self, n): self._haar_centered_Init() self._scratch = [] for i in range(0,n): self._scratch.append(0.0) return def __del__(self): return def transform_inverse(self, list, stride): self._wavelet_transform(list, stride, -1) return def transform_forward(self, list, stride): self._wavelet_transform(list, stride, 1) return def _haarInit(self): self._wave = wave() self._wave.offset = 0 return def _haar_centered_Init(self): self._wave = wave() self._wave.offset = 1 return def _wavelet_transform(self, list, stride, dir): n = len(list) if (len(self._scratch) < n): print("not enough workspace provided") exit() if (not self._ispower2(n)): print("the list size is not a power of 2") exit() if (n < 2): return if (dir == 1): # 正变换 i = n while(i >= 2): self._step(list, stride, i, dir) i = i>>1 if (dir == -1): # 逆变换 i = 2 while(i <= n): self._step(list, stride, i, dir) i = i << 1 return def _ispower2(self, n): power = math.log(n,2) intpow = int(power) intn = math.pow(2,intpow) if (abs(n - intn) > 1e-6): return False else: return True def _step(self, list, stride, n, dir): for i in range(0, len(self._scratch)): self._scratch[i] = 0.0 nmod = self._wave.nc * n nmod -= self._wave.offset n1 = n - 1 nh = n >> 1 if (dir == 1): # 正变换 ii = 0 i = 0 while (i < n): h = 0 g = 0 ni = i + nmod for k in range(0, self._wave.nc): jf = n1 & (ni + k) h += self._wave.h1[k] * list[stride*jf] g += self._wave.g1[k] * list[stride*jf] self._scratch[ii] += h self._scratch[ii + nh] += g i += 2 ii += 1 if (dir == -1): # 逆变换 ii = 0 i = 0 while (i < n): ai = list[stride*ii] ai1 = list[stride*(ii+nh)] ni = i + nmod for k in range(0, self._wave.nc): jf = n1 & (ni + k) self._scratch[jf] += self._wave.h2[k] * ai + self._wave.g2[k] * ai1 i += 2 ii += 1 for i in range(0, n): list[stride*i] = self._scratch[i] 测试代码如下: test.py import math import Wavelet waveletn = 256 waveletnc = 20 #保留的分量数 wavelettest = Wavelet.Wavelet(waveletn) waveletorigindata = [] waveletdata = [] for i in range(0, waveletn): waveletorigindata.append(math.sin(i)*math.exp(-math.pow((i-100)/50,2))+1) waveletdata.append(waveletorigindata[-1]) wavelettest.transform_forward(waveletdata, 1) newdata = sorted(waveletdata, key = lambda ele: abs(ele), reverse=True) for i in range(waveletnc, waveletn): # 筛选出前 waveletnc个分量保留 for j in range(0, waveletn): if (abs(newdata[i] - waveletdata[j]) < 1e-6): waveletdata[j] = 0.0 break wavelettest.transform_inverse(waveletdata, 1) waveleterr = 0.0 for i in range(0, waveletn): print(waveletorigindata[i], ",", waveletdata[i]) waveleterr += abs(waveletorigindata[i] - waveletdata[i])/abs(waveletorigindata[i]) print("error: ", waveleterr/waveletn) 当waveletnc = 20时,可得到下图,误差大约为2.1 当waveletnc = 100时,则为下图,误差大约为0.04 当waveletnc = 200时,得到下图,误差大约为0.0005
|