Java 如何根据感兴趣区域周围的设计去除图像背景?
我正在创建一个应用程序,允许用户从伤口图像中选择感兴趣的区域。一旦通过在屏幕上绘图选择了感兴趣的区域,该算法将分割并删除图像中的背景,留下黑色背景并仅突出显示该区域伤口。我仍处于应用程序的初始阶段,今天它只是绘制感兴趣的区域,我希望能够以最好的方式进行分割,并且它将用于多个伤口图像,无论是大的、小的、亮的、暗的等等。Java 如何根据感兴趣区域周围的设计去除图像背景?,java,android,opencv,kotlin,mobile,Java,Android,Opencv,Kotlin,Mobile,我正在创建一个应用程序,允许用户从伤口图像中选择感兴趣的区域。一旦通过在屏幕上绘图选择了感兴趣的区域,该算法将分割并删除图像中的背景,留下黑色背景并仅突出显示该区域伤口。我仍处于应用程序的初始阶段,今天它只是绘制感兴趣的区域,我希望能够以最好的方式进行分割,并且它将用于多个伤口图像,无论是大的、小的、亮的、暗的等等。 我需要对图像进行分割,以便稍后运行一个算法对伤口组织进行分类。这就是为什么我需要这个细分 我正在使用android本身的lib画布来绘制。 如何使用分水岭,如何利用现有资源 应
我需要对图像进行分割,以便稍后运行一个算法对伤口组织进行分类。这就是为什么我需要这个细分 我正在使用android本身的lib画布来绘制。 如何使用分水岭,如何利用现有资源 应用程序屏幕: 在图像中,伤口周围的绿色设计将作为分割算法的参考 输出示例:
您正在Android中使用Java和Kotlin,因此我不知道如何在OpenCV中使用它们,但我可以给您一个我将如何在python中使用它们的示例,希望您可以将其转换为Java 创建一个与输入图像尺寸相同的黑色图像(即全零图像),该图像应为您的屏幕。这可以通过
mask=np.zeros((img.shape),dtype=np.uint8)
实现,其中img是图像。现在,当用户在屏幕上绘制伤口的边界时,也将其绘制在空白掩模上。使用cv2.RETR\u EXTERNAL
模式查找轮廓。python中的语法是:
cnts, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
在此之后,你将有一个轮廓,我们将填补,以获得我们的面具
cv2.drawContours(mask, cnts, -1, (255, 255, 255), -1)
在制作遮罩时,使用按位和提取您的ROI
roi = cv2.bitwise_and(img, img, mask=mask)
如果您可以将其转换为Java或Kotlin,这应该可以做到。如果用户正在屏幕上绘制区域,为什么您需要一些特殊的算法?用户给你他想要看到的确切区域我需要分割图像,这样我以后可以运行一个算法对伤口组织进行分类。这就是为什么我需要这个细分。如果你能帮助我,我非常感谢你