Hid*_*ame 9 python opencv numpy
我有一个加载的图像:
im = cv2.imread(filename)
Run Code Online (Sandbox Code Playgroud)
我想保留位于图像中心的数据.我创建了一个圆圈作为我想要保留的区域的面具.
我创建了圆圈:
height,width,depth = im.shape
circle = np.zeros((height,width))
cv2.circle(circle,(width/2,height/2),280,1,thickness=-1)
Run Code Online (Sandbox Code Playgroud)
如何从原始图像中屏蔽圆圈外的数据?
masked_data = im * circle
Run Code Online (Sandbox Code Playgroud)
不起作用.
Fro*_*oyo 14
使用cv2.bitwise_and并将圆圈作为蒙版传递.
im = cv2.imread(filename)
height,width,depth = im.shape
circle_img = np.zeros((height,width), np.uint8)
cv2.circle(circle_img,(width/2,height/2),280,1,thickness=-1)
masked_data = cv2.bitwise_and(im, im, mask=circle_img)
cv2.imshow("masked", masked_data)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
circle只是一个带有1.0s和0.0s 的2D数组.Numpy需要帮助来了解你想要用你的第三个维度做什么,im所以你必须给它一个额外的轴,然后你的线就行了.
masked_data = im * circle[..., np.newaxis]
Run Code Online (Sandbox Code Playgroud)
但请注意,(0, 0, 0)如果图像缺少alpha通道,则屏蔽只是根据您的代码将颜色设置为圆外的事物.
但是你有另一个潜在的问题:circle将默认的数据类型的(这可能会float64或float32这不利于你的形象,所以你应该改变在其中创建行了.circle到
circle = np.zeros((height, width), dtype=im.dtype)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37602 次 |
| 最近记录: |