Photoshop快速把人物图片转黑白素描画(1)

本文介绍了一种将彩色照片快速转换成素描风格图片的方法。主要步骤包括:使用去色处理,通过反相和特定滤镜效果制作类似素描的纹理,并调整图层混合模式以获得最终效果。
人物转素描的方法有很多,下面的方法是最常见及最快捷的。大致过程:先把照片去色处理,再用一些滤镜做成类色素描的纹理,然后改变图层混合模式即可得到想要的效果。
原图 
 
最终效果1 
 
最终效果2 
1、打开原图素材,按Ctrl + Shift + U 去色,然后把背景图层复制一层。 
 
2、按Ctrl + I 把背景副本反相,图层混合模式改为“颜色减淡”。 
3、执行:滤镜 > 其它 > 最少值,数值为1-2像素。 

 


4、点击图层面板下面的图层样式按钮,添加图层样式选择“混合选项”。选择混合颜色带中的灰色,按住Alt 键盘,用鼠标拖动下一层的深色滑块的右半到合适位置。 
5、新建一个图层,填充白色,加上图层蒙版,用黑色画笔把人物部分擦出来。确定后合并所有图层,完成最终效果。 
 
最终效果: 
 
如果不做去色,则可得到彩色线描: 

### STL 分解的三个关键要素 C++ 的标准模板库(STL)由 **容器**、**算法** 和 **迭代器** 这三大核心组件构成[^2]。以下是这三个要素的具体解释以及它们如何通过图表形式表现: #### 1. 容器 (Containers) 容器是用来存储数据的对象集合,分为顺序容器和关联容器两大类。常见的容器包括 `vector`、`list`、`deque`、`set` 和 `map` 等。 - **顺序容器**: 如 `vector` 和 `list`,按照元素插入的顺序存储数据。 - **关联容器**: 如 `set` 和 `map`,基于键值对的方式存储数据并自动排序[^3]。 ##### 图表表示 在图表中,通常会用矩形框来代表不同的容器类型,并标注其特点: - 使用箭头连接不同类型的容器,展示继承关系或功能扩展。 - 对于关联容器,可以用树状图显示内部结构,例如红黑树用于实现 `std::map` 或 `std::set`。 ```cpp // 示例代码:定义一个 map 类型的容器 #include <iostream> #include <map> int main() { std::map<int, std::string> myMap; myMap[1] = "One"; myMap[2] = "Two"; for (const auto& pair : myMap) { std::cout << pair.first << ": " << pair.second << "\n"; } } ``` --- #### 2. 算法 (Algorithms) STL 提供了一组通用算法,这些算法独立于具体的容器类型,能够作用于任何支持迭代器接口的序列上。常见算法包括排序 (`sort`)、查找 (`find`)、变换 (`transform`) 等。 - 排序算法如 `std::sort` 可以快速高效地排列容器中的元素。 - 查找算法如 `std::binary_search` 利用了二分查找技术,在有序数组中寻找目标值。 ##### 图表表示 对于算法部分,可以通过流程图描述具体的操作逻辑: - 流程图节点可以标记为输入、处理过程和输出。 - 特别是复杂算法(如归并排序),可以用递归调用的形式展现层次化的过程。 ```cpp // 示例代码:使用 sort 函数对 vector 中的内容进行排序 #include <algorithm> #include <vector> #include <iostream> int main() { std::vector<int> numbers = {5, 2, 9, 1}; std::sort(numbers.begin(), numbers.end()); for (auto num : numbers) { std::cout << num << " "; } } ``` --- #### 3. 迭代器 (Iterators) 迭代器是一种泛化的指针,允许程序遍历容器中的元素而不暴露底层实现细节。根据用途的不同,迭代器可分为五种主要类别:输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。 - 随机访问迭代器适用于像 `vector` 这样的连续内存布局容器,提供高效的索引操作。 - 前向迭代器则适合链表等单向链接的数据结构。 ##### 图表表示 迭代器的关系可以用 UML 类图或者状态换图表达: - 不同种类的迭代器之间存在继承关系,高级别的迭代器具备低级别迭代器的功能。 - 换图为每种迭代器的行为模式建模,说明哪些方法可用及其约束条件。 ```cpp // 示例代码:利用迭代器打印 list 中的所有元素 #include <list> #include <iterator> #include <iostream> int main() { std::list<int> myList = {10, 20, 30}; for (auto it = myList.begin(); it != myList.end(); ++it) { std::cout << *it << " "; } } ``` --- ### 总结 上述三大部分同构成了 C++ 标准模板库的核心框架。容器负责管理数据;算法专注于执行特定任务;而迭代器作为桥梁,使得两者之间的交互更加灵活且统一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值