Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据感兴趣区域周围的设计去除图像背景?_Java_Android_Opencv_Kotlin_Mobile - Fatal编程技术网

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,这应该可以做到。

如果用户正在屏幕上绘制区域,为什么您需要一些特殊的算法?用户给你他想要看到的确切区域我需要分割图像,这样我以后可以运行一个算法对伤口组织进行分类。这就是为什么我需要这个细分。如果你能帮助我,我非常感谢你