Java OpenCV 图像处理34 图形图像 分水岭 watershed

package com.xu.opencv;import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;/*** @Title: Image.java* @Description: OpenCV-4.0.0 测试文件* @Package com.xu.Image* @author: hyacinth* @date: 2022年2月15日12点10分* @version: V-1.0.0* @Copyright: 2019 hyacinth*/
public class Image {static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}public static void main(String[] args) {watershed();}public static void watershed() {// 1 读取图片Mat source = Imgcodecs.imread("D:\\OneDrive\\桌面\\1.png", Imgcodecs.IMREAD_COLOR);HighGui.imshow("mask", source);// 2 转为回去图片Mat gray = new Mat(source.rows(), source.cols(), CvType.CV_8UC1);Imgproc.cvtColor(source, gray, Imgproc.COLOR_BGR2GRAY);// 3 图片二值化Mat binary = Mat.zeros(gray.rows(), gray.cols(), CvType.CV_8UC1);Imgproc.threshold(gray, binary, 100, 255, Imgproc.THRESH_BINARY);// 4 获取前景Mat fg = new Mat(source.size(), CvType.CV_8U);Imgproc.erode(binary, fg, new Mat(), new Point(-1, -1), 2);// 5 获取背景Mat bg = new Mat(source.size(), CvType.CV_8U);Imgproc.dilate(binary, bg, new Mat(), new Point(-1, -1), 3);Imgproc.threshold(bg, bg, 1, 128, Imgproc.THRESH_BINARY_INV);// 6 初始化一个空白图片Mat temp1 = new Mat(binary.size(), CvType.CV_8U, new Scalar(0));Mat temp2 = new Mat(binary.size(), CvType.CV_8U, new Scalar(0));Mat temp3 = new Mat(binary.size(), CvType.CV_8U, new Scalar(0));// 7 前景和背景融合Mat mask = new Mat(binary.size(), CvType.CV_8U, new Scalar(0));Core.add(fg, bg, mask);// 8 mask 转为 CV_32Smask.convertTo(temp1, CvType.CV_32S);Imgproc.watershed(source, temp1);temp1.convertTo(temp2, CvType.CV_8UC1);temp1.convertTo(temp3, CvType.CV_8U, 255, 255);temp1.convertTo(temp1, CvType.CV_8UC1);// 9 显示结果HighGui.imshow("mask", mask);HighGui.imshow("temp1", temp1);HighGui.imshow("temp2", temp2);HighGui.imshow("temp3", temp3);HighGui.waitKey();HighGui.destroyAllWindows();}}

Java OpenCV 图像处理34 图形图像 分水岭 watershed相关推荐

  1. Java OpenCV 图像处理04.0 图像形状与文字绘制

    Java OpenCV 图像处理04.0 图像形状与文字绘制 Github 代碼地址 OpenCV 仿射变换.透视变换.旋转.平移.缩放 序號 名稱 方法 1 圖像 添加文字 Imgproc.putT ...

  2. Java OpenCV 图像处理23.0 图像轮廓

    Java OpenCV 图像处理23.0 图像轮廓 Java OpenCV-4.0.0 图像轮廓 输入图像转为灰度图像cvtColor 使用Canny进行边缘提取,得到二值图像 使用findConto ...

  3. java识别图片中的图形形状_基于Java+OpenCV技术对几何图像颜色与形状识别

    基于 Java+OpenCV 技术对几何图像颜色与形状识别 杨思阳 黄军 吴春秋 (黔东南民族职业技术学院,贵州 凯里 556000) [摘 要] 通过 Java 调用 OpenCV 视觉库实现几何图 ...

  4. Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景

    Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景 方法 含义 解释 bitwise_and "与"操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制 ...

  5. Java OpenCV 图像处理30 视频分析和对象跟踪 视频读取

    Java OpenCV 图像处理30 视频分析和对象跟踪 视频读取 Java OpenCV-4.0.0 图像处理 视频分析和对象跟踪 视频读取 package com.xu.opencv.video; ...

  6. opencv4 c++ 提取图片中的白色区域_修正!【从零学习OpenCV 4】分割图像——分水岭法...

    点击上方"小白学视觉",选择"星标"公众号重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开 ...

  7. OpenCV图像处理(十二)---图像阈值化

    如果两个热力学系统中的每一个都与第三个热力学系统处于热平衡(温度相同),则它们彼此也必定处于热平衡.这一结论称做"热力学第零定律".又称热平衡定律,是热力学的四条基本定律之一,是一 ...

  8. OpenCV基础篇——图形图像旋转

    以前在做图像处理的时候用到了图像的旋转,opencv自带的flip函数只能180度,因为需要旋转任意角度,顺时针和逆时针的情况,所以去找了些效果比较好的函数来实现.网上有的旋转函数有内存泄露的现象,现 ...

  9. 【图像处理】图形图像中术语

    1.阈值      阈值又叫临界值,是指一个效应能够产生的最低值或最高值. 2.二值化      图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视 ...

最新文章

  1. 计算机电缆的屏蔽,DJYVP计算机电缆(总屏蔽)和DJYPVP计算机电缆(分屏蔽加总屏蔽)区别...
  2. python网络编程例子
  3. POJ 3982 序列 塔尔苏斯问题解决
  4. Object.keys 及表单清空
  5. Docker怎样提交镜像(把容器打成镜像)
  6. Java减少依赖_去掉JAVA部分依赖的事例
  7. [js] 处理字符串换行造成的json解析失败
  8. 计算机不小心删除怎么找回桌面,如何将桌面上误删的文件找回
  9. java world_Java World中的GraphQL简介
  10. 如何使用html如何安装,node.js – 如何使用全球安装的grunt-html?
  11. SparkRDD内核
  12. pip 升级 pip
  13. 接口性能测试方案分析
  14. 管家婆mysql 数据库_Java数据库小项目02--管家婆项目
  15. ❤️Windows系统❤️cmd命令+实用工具 大全❤️完整总结
  16. 金蝶K3开发-委外入库批量核销和反核销
  17. 深入理解风控中的 KS 原理
  18. 北美哪些跨境电商平台十大排行榜
  19. superset二次开发
  20. python英汉词典

热门文章

  1. Android wifi 常见断开问题总结
  2. 半年销售100万辆 关注比亚迪后300万时代
  3. 【RPA自动化|提升办公效率】无需代码的傻瓜式爬虫
  4. 安装 deepin系统 实现windows和deepin双系统
  5. 基于Hexo和Github搭建博客
  6. Serdes series # skew
  7. elasticjob已下线_elasticJob 源码解析之自诊断恢复
  8. 阿里云Api网关导入Swagger功能简介
  9. A001-186-2629-赖海洲
  10. python-pygame实现飞机大战-5-屏幕渲染绘制分数、生命数、超级炸弹数以及暂停功能