Azure Computer Vision 之 Smart Crop 智能裁剪图片
前言
一个网站通常有许多地方会用到同一张图,但是比例又不一样.
一般的做法就是用 CSS 的 cover 和 contain 来处理.
由于 cover 只会保留中间信息, 所以很多时候需要人工裁剪.
于是就有了智能裁剪的需求了.
Azure Computer Vision
参考:

价格还可以

实现步骤
1. 到 Azure portal 创建 Computer Vision

没有什么特别的, 默认就可以了 (注: 一个 account 只能有一个 free 的 Computer Vision 哦)
2. 进入 Computer Vision Resource > Keys and Endpoint 把 key 和 endpoint 抄起来

3. 安装 SDK
dotnet add package Microsoft.Azure.CognitiveServices.Vision.ComputerVision
2 个核心功能, 第 1 个是获取全图焦点, 第 2 个是给定要求智能裁剪
[HttpPost("SmartCrop")]
public async Task<ActionResult> SmartCropAsync()
{
var subscriptionKey = "key";
var endpoint = "https://jbreviews-cv.cognitiveservices.azure.com/";
var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
{
Endpoint = endpoint
};
var imageFileFullPath = @"WebApi\Controller\Test\SmartCrop\10.png";
using var imageStream = new FileStream(imageFileFullPath, FileMode.Open);
// get area of interest
var areaOfInterestResult = await client.GetAreaOfInterestInStreamAsync(imageStream); // 这里返回之后 imageStream 就自动被 close 了
using var image = Image.Load(imageFileFullPath);
var croppedImage = image.Clone(imageProcessing =>
{
imageProcessing.Crop(new Rectangle(
x: areaOfInterestResult.AreaOfInterest.X,
y: areaOfInterestResult.AreaOfInterest.Y,
width: areaOfInterestResult.AreaOfInterest.W,
height: areaOfInterestResult.AreaOfInterest.H)
);
});
croppedImage.SaveAsJpeg(
@"WebApi\Controller\Test\SmartCrop\11.png", new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder
{
Quality = 85
}
);
// get smart crop image
using var imageStream2 = new FileStream(imageFileFullPath, FileMode.Open);
var croppedImageStream = await client.GenerateThumbnailInStreamAsync(300, 100, imageStream2, smartCropping: true);
using var imageFileStream = System.IO.File.Create(@"WebApi\Controller\Test\SmartCrop\12.png");
croppedImageStream.CopyTo(imageFileStream);
return Ok();
}
缺陷
GetAreaOfInterest 可以获取到一张图的焦点, 这个焦点并不是指人脸, 它只是去掉背景,保留主题而已.
比如这张杨幂图, 焦点就是中间的部分

结果:

如果再拿这张图去找焦点, 返回的结果是一样的, 并不会返回杨幂的脸, 所以它并不会一只往下找焦点中的焦点.
使用 GenerateThumbnail 可以指定一个 width 和 height. 它会通过找到 interest 之后再调整 zoom 然后 crop.
如果需求是 100x100 那么结果依然是上面这张焦点图, 只是被压缩到 100x100 而已. 它会尽可能保留焦点的全部信息.
如果限制是 400x100 那么它就没办法调整 zoom 了. 这个时候它只能取舍掉焦点图的信息. 类似 css cover 的做法.
而由于它没有办法识别出焦点的焦点, 所以它只能从中心点开始, 结果就和 css cover 一模一样的效果了

由人处理的话应该是这样的:

所以它并不能没有想象中的智能.
Azure Computer Vision 之 Smart Crop 智能裁剪图片的更多相关文章
- 如何创建Azure Face API和计算机视觉Computer Vision API
在人工智能技术飞速发展的当前,利用技术手段实现人脸识别.图片识别已经不是什么难事.目前,百度.微软等云计算厂商均推出了人脸识别和计算机视觉的API,其优势在于不需要搭建本地环境,只需要通过网络交互,就 ...
- Computer Vision Tutorials from Conferences (3) -- CVPR
CVPR 2013 (http://www.pamitc.org/cvpr13/tutorials.php) Foundations of Spatial SpectroscopyJames Cogg ...
- Computer Vision: Algorithms and ApplicationsのImage processing
实在是太喜欢Richard Szeliski的这本书了.每一章节(after chapter3)都详述了该研究方向比較新的成果.还有很多很多的reference,假设你感兴趣.全然能够看那些參考论文 ...
- AI-Azure上的认知服务之Computer Vision(计算机视觉)
使用 Azure 的计算机视觉服务,开发人员可以访问用于处理图像并返回信息的高级算法. 主要包含如下高级算法: 标记视觉特性Tag visual features 检测对象Detect objects ...
- paper 156:专家主页汇总-计算机视觉-computer vision
持续更新ing~ all *.files come from the author:http://www.cnblogs.com/findumars/p/5009003.html 1 牛人Homepa ...
- Computer vision labs
积累记录一些视觉实验室,方便查找 1. 多伦多大学计算机科学系 2. 普林斯顿大学计算机视觉和机器人实验室 3. 牛津大学Torr Vision Group 4. 伯克利视觉和学习中心 Pro ...
- Computer Vision: OpenCV, Feature Tracking, and Beyond--From <<Make Things See>> by Greg
In the 1960s, the legendary Stanford artificial intelligence pioneer, John McCarthy, famously gave a ...
- [转载]Three Trending Computer Vision Research Areas, 从CVPR看接下来几年的CV的发展趋势
As I walked through the large poster-filled hall at CVPR 2013, I asked myself, “Quo vadis Computer V ...
- (转) WTF is computer vision?
WTF is computer vision? Posted Nov 13, 2016 by Devin Coldewey, Contributor Next Story Someon ...
- Computer Vision 学习 -- 图像存储格式
本文把自己理解的图像存储格式总结一下. 计算机中的数据,都是二进制的,所以图片也不例外. 这是opencv文档的描述,具体在代码里面,使用矩阵来进行存储. 类似下图是(BGR格式): 图片的最小单位是 ...
随机推荐
- 如何更好的使用 Windows
如何更好的使用 Windows Microsoft 辅助功能和工具 键盘快捷方式,常用 ctrl+C 复制 ctrl+V 粘贴 ctrl+X 剪切 ctrl+Z 撤销 ctrl+Y 回退 alt+ta ...
- 关于IE11点击的select框需要点击两次才能展开option选择框
需求:select是一个级联选择框,点击select框之后向后台请求,然后把请求的数据展示出来. 问题:绑定onclick或者onfocus的时候,需要点击select框两次,才能将option选择框 ...
- Django 结合Vue实现前端页面导出为PDF
Django结合Vue实现前端页面导出为PDF by:授客 QQ:1033553122 测试环境 Win 10 Python 3.5.4 Django-2.0.13.tar.gz 官方下载地址: ht ...
- CF1950B Upscaling题解
CF1950B Upscaling题解 题意 给予你一个正整数 \(n\),构造一个如图的字符矩阵. 思路 注意数据 \(1\le n \le 20\),可以发现数据很小,于是我们可以暴力模拟. 我们 ...
- 常用ffmpeg命令集合(收藏吧,帮你省一个录屏软件的会员费)
录制屏幕: 全屏的话用screen-capture-recoder下载地址:https://github.com/rdp/screen-capture-recorder-to-video-window ...
- 2023/4/17 SCRUM个人博客
1.我昨天的任务 学习了easydict库的基本操作 2.遇到了什么困难 没有找到合适的人脸识别库 3.我今天的任务 初步学习dlib的安装,了解dlib的基础组件
- os.popen(cmd) 与 os.system(cmd) 的区别
os.popen(cmd) 与 os.system(cmd) 的区别 1,os.popen(cmd) 不会直接返回任何数据,os.system(cmd) 会直接输出结果(返回的却是int状态码) 2, ...
- 神经网络之卷积篇:详解计算机视觉(Computer vision)
详解计算机视觉 计算机视觉是一个飞速发展的一个领域,这多亏了深度学习.深度学习与计算机视觉可以帮助汽车,查明周围的行人和汽车,并帮助汽车避开它们.还使得人脸识别技术变得更加效率和精准,即将能够体验到或 ...
- 【爬虫】Python获取星巴克所有产品
视频只介绍了BS4的简单使用,但我想全部获取出来 其实翻看接口,直接有一个json资源提供了这些数据,但是没有分类 import re import urllib.request from bs4 i ...
- 【Vue2】Component 组件
Main.JS入口函数,Vue的用法 //导入vue模块,得到Vue构造函数 import Vue from 'vue' // 导入根组件App.vue import App from './App. ...