10、Cropping and Transformations

本文详细介绍了在图像编辑过程中的一些关键操作与技巧,包括如何将背景图层转化为普通图层、使用剪切工具全选并调整图片可视面积、新建图层的方法、使用变换工具改变图片形状与位置、内容感知缩放技术等。此外,还提供了使用剪切工具对图片进行全选、调整可视面积的具体步骤,并解释了不同方法的区别。通过这些操作,可以帮助用户更好地理解和掌握图像编辑的基本技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、如果当前图层是背景图层,你需要在图层面版中右击图层,选择layer from background或者直接双击确定。这样把背景图层转化为一般图层,然后用选择工具进行选择,选择后,右上角会出现delete和hide选项,使用hide选项并确定。以后使用移动工具移动图层时,删除的部份依然会出现。

2、如果你使用刚才的方法进行修剪图片后想要复原删除的部份,除了使用历史功能外,你还可以使用image-reveal all选项。

3、使用剪切工具对整个图片进行全选,然后拖大选框(按住alt拖放时可以对称扩大),最后按回车。这样图片的可视面积就会放大,扩大的部份是透明或背景色。

4、新建图层时,默认情况下新建的图层在上方,按住ctrl键新建图层,即新图层在当前图层下方。

5、选择择图层后,选择eidt-fill可以填充图层。

6、选择一个图层,然后选择图层样式中的stroke。然后选择内,颜色选择白色。这样后的效果是图片像一张照片。

7、另一种改变图片可视面积大小的方法是直接使用image-canvas size方法。

8、上面两种改变图片可视面积大小的方法的区别是前者增加的及原来的地方是一个新图层,后者是在原来图层中直接扩展。

9、对物体照相时,如果从侧面照,然后想处理成一个正面的效果可以使用切图工具。先拉一个选区,然后选中上面选项栏的perspective按钮。选中后选区的四个角可以在其它三个角的点不变的情况下只改变一个角的点。然后更改选区把斜的物体选中后双击,这样斜的物体就变回正面。

10、把旋转后的图片改变正面可以使用ruler tool。按相对水平线画一条直线后点击上面选项栏的straighten按钮后即可。这和camera raw的straighten tool几乎一样。

11、edit-free transform可以宿放、旋转、扭曲图层或选区。如果按住shift会按比例缩放。处于transform状态图像,右击时选择flip,会出现成镜的效果。

12、变形(transform)会破坏图像。即缩小后如果再放大,结果会和原来不一样。如果你先对对像的图层右击并选择convert to smart objects,这样图像变形后再变回原形也不会失真。转化为smart对像后的图层会有一个图标。

13、图层处于transform状态时,如果右击或选择按钮worp(歪曲)时,你可以随意地歪曲图层,在顶层选择区中也有一个worp下拉框选项,里面提供了一些规则的歪曲模板。

14、歪曲对像后,再使用图层样式中的影子,效果会更迫真。在调整影子位置时,可以直接把鼠标放到影子上拖移,调整影子的距离。

15、内容感知缩放(content-aware scare)。先选中图层,然后点击edit-content-arware scare。先中后,在宿放图层的过程中,背景会被缩放,而主要对像即不会被缩放。如果默认的效果不好,可以先建立选区,就是选中不粗略地对不参与缩放的对像进行选择,然后点击select-save selection。然后取消选区后再进入到内容感知状态下,在顶栏中的protect中选择刚才的选区。然后再缩放时,被保护的对像不会被缩放。
### 关于 `AssertionError` 和张量形状不匹配问题 当遇到 `AssertionError` 并提示输入张量 `(64, 3, 32, 32)` 的格式与预期的 HWC 不匹配时,这通常是因为模型或框架期望的数据布局与其实际接收到的不同。以下是可能的原因以及解决方案: #### 数据维度顺序差异 常见的图像数据表示有两种主要形式:HWC(高度、宽度、通道)和 CHW(通道、高度、宽度)。许多深度学习框架(如 PyTorch)默认使用 CHW 格式作为输入,而其他库(如 OpenCV 或 TensorFlow 默认情况下可能会返回 HWC 格式的数组)。如果未正确转换,则可能导致断言错误。 对于给定的张量尺寸 `(64, 3, 32, 32)`,它实际上遵循的是 NCHW 布局[^1],其中: - **N**: 批次大小 (batch size),这里是 64。 - **C**: 图像的通道数 (channels),这里是 RGB 彩色图片对应的 3。 - **H**: 高度 (height),这里为 32。 - **W**: 宽度 (width),同样也是 32。 然而,如果你尝试将其传递到一个期待 HWC 输入结构的地方就会引发冲突。 #### 解决方案一:调整数据排列方式 可以利用 NumPy 提供的功能来改变轴的位置从而完成必要的变换操作。下面展示如何通过 `.transpose()` 方法实现从 NHWC 到 NCHW 转换的一个例子: ```python import numpy as np # Assuming data is initially in NHWC format with shape (64, 32, 32, 3) data_nhwc = np.random.rand(64, 32, 32, 3) # Convert to NCHW by permuting axes data_nchw = data_nhwc.transpose((0, 3, 1, 2)) # Shape becomes (64, 3, 32, 32) ``` 上述代码片段展示了怎样把原始 NHWC 类型的数据重新组织成适合某些神经网络层使用的 NCHW 格式[^2]。 #### 解决方案二:验证并修正配置参数 另一种可能性在于训练脚本或者推理过程中设置不当引起的误解;比如加载预处理阶段忘记指定正确的颜色空间或是误用了不同的读图函数等都会造成最终送入模型前后的形态不符现象发生。因此建议仔细检查整个流水线中的每一步骤是否有潜在隐患存在。 另外值得注意的一点是,在定义自定义 Dataset 子类的时候也要特别留意getitem()方法里边是如何构建样本元组(sample tuple)的具体细节部分[^3]: ```python def __getitem__(self, index): img_path = self.imgs[index] image = Image.open(img_path).convert('RGB') # Ensure images are loaded as RGB if self.transform is not None: image = self.transform(image) # Apply transformations including ToTensor() label = ... # Load corresponding label here. return image, label ``` 在这个特定场景下,确保所有的图像都被转化为标准的三原色模式(RGB), 同时应用任何额外所需的转换步骤诸如缩放(resizing)、裁剪(cropping)或者是标准化(normalization)[^4]. ### 总结 综上所述,要解决此类 AssertionError 错误的关键在于理解当前工作流所采用的确切存储约定,并采取适当措施使两者保持一致。无论是手动重塑还是修改初始化逻辑都可以有效缓解这一状况的发生几率.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值