如何使用 skimage 或 opencv 删除 XRAY png 图像的一部分?

How to remove a part of XRAY png image using skimage or opencv?

我需要在 OpenCV 上使用 skimage 删除 png 图像中多余的黑色部分。 有人可以指导如何去做吗? 我是图像处理的新手。 提前致谢。

您可以通过找到不是全黑的第一行和最后一行/列来解决这个问题。有了这些,您可以轻松创建只包含感兴趣区域的新图像。

下面的代码使用 openCV 完成您想要的。

结果:

!注意调整大小功能。将其删除以进行最后处理。

import numpy as np
import cv2

# Load a color image as grayscale
img = cv2.imread('Xray.png',0)

# resize to easily view (img is ~4000x4000), remove for final version
img = cv2.resize(img,None,fx=0.2, fy=0.2, interpolation = cv2.INTER_CUBIC)

# sum each row and each volumn of the image
sumOfCols = np.sum(img, axis=0)
sumOfRows = np.sum(img, axis=1)

# Find the first and last row / column that has a sum value greater than zero, 
# which means its not all black. Store the found values in variables
for i in range(len(sumOfCols)):
    if sumOfCols[i] > 0:
        x1 = i
        print('First col: ' + str(i))
        break

for i in range(len(sumOfCols)-1,-1,-1):
    if sumOfCols[i] > 0:
        x2 = i
        print('Last col: ' + str(i))
        break

for i in range(len(sumOfRows)):
    if sumOfRows[i] > 0:
        y1 = i
        print('First row: ' + str(i))
        break

for i in range(len(sumOfRows)-1,-1,-1):
    if sumOfRows[i] > 0:
        y2 = i
        print('Last row: ' + str(i))
        break

# create a new image based on the found values
roi = img[y1:y2,x1:x2]

# save new image with region of interest
cv2.imwrite('Xray_roi.png',roi)

# display image / subimage and release resources when key is pressed
cv2.imshow('full_image',img)
cv2.imshow('RoI',roi)
cv2.waitKey(0)
cv2.destroyAllWindows()