我正在尝试为我的深度学习模型生成合成图像。我需要在黑色表面上画划痕。我已经有了一个小脚本,可以生成随机的白色划痕状线条,但只能水平生成。我需要的划痕也垂直和弯曲。最重要的是,如果划痕的厚度也是随机的,这也会非常有用,所以我有厚的和薄的划痕
这是我目前的代码:
import cv2
import numpy as np
import random
height = 384
width = 384
blank_image = np.zeros((height, width, 3), np.uint8)
num_scratches= random.randint(0,5)
for _ in range(num_scratches):
row_random = random.randint(20,370)
blank_image[row_random:(row_random+1), row_random:(row_random+random.randint(25,75))] = (255,255,255)
cv2.imshow("synthetic", blank_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
这是一个示例结果:
我必须如何编辑我的脚本才能获得更多样化的外观
划痕看起来应该是这样的,例如(用油漆完成):
划痕也需要垂直
您的方法可以采用如下方式
输出:
说明:我将y坐标在1(包括)和4(排除)之间、x坐标在2(包括)和3(排除)之间的所有元素(像素)都设置为y坐标。 尽管如此
cv2
提供了绘制线条的功能,即cv2.line,这更方便使用,它确实接受img
的工作点、起点、终点、颜色和厚度,文档给出了以下示例:如果使用灰度,请使用值而不是三元组作为颜色
相关问题 更多 >
编程相关推荐