Java OpenCV 图像处理34 图形图像 分水岭 watershed
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相关推荐
- Java OpenCV 图像处理04.0 图像形状与文字绘制
Java OpenCV 图像处理04.0 图像形状与文字绘制 Github 代碼地址 OpenCV 仿射变换.透视变换.旋转.平移.缩放 序號 名稱 方法 1 圖像 添加文字 Imgproc.putT ...
- Java OpenCV 图像处理23.0 图像轮廓
Java OpenCV 图像处理23.0 图像轮廓 Java OpenCV-4.0.0 图像轮廓 输入图像转为灰度图像cvtColor 使用Canny进行边缘提取,得到二值图像 使用findConto ...
- java识别图片中的图形形状_基于Java+OpenCV技术对几何图像颜色与形状识别
基于 Java+OpenCV 技术对几何图像颜色与形状识别 杨思阳 黄军 吴春秋 (黔东南民族职业技术学院,贵州 凯里 556000) [摘 要] 通过 Java 调用 OpenCV 视觉库实现几何图 ...
- Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景
Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景 方法 含义 解释 bitwise_and "与"操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制 ...
- Java OpenCV 图像处理30 视频分析和对象跟踪 视频读取
Java OpenCV 图像处理30 视频分析和对象跟踪 视频读取 Java OpenCV-4.0.0 图像处理 视频分析和对象跟踪 视频读取 package com.xu.opencv.video; ...
- opencv4 c++ 提取图片中的白色区域_修正!【从零学习OpenCV 4】分割图像——分水岭法...
点击上方"小白学视觉",选择"星标"公众号重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开 ...
- OpenCV图像处理(十二)---图像阈值化
如果两个热力学系统中的每一个都与第三个热力学系统处于热平衡(温度相同),则它们彼此也必定处于热平衡.这一结论称做"热力学第零定律".又称热平衡定律,是热力学的四条基本定律之一,是一 ...
- OpenCV基础篇——图形图像旋转
以前在做图像处理的时候用到了图像的旋转,opencv自带的flip函数只能180度,因为需要旋转任意角度,顺时针和逆时针的情况,所以去找了些效果比较好的函数来实现.网上有的旋转函数有内存泄露的现象,现 ...
- 【图像处理】图形图像中术语
1.阈值 阈值又叫临界值,是指一个效应能够产生的最低值或最高值. 2.二值化 图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视 ...
最新文章
- 计算机电缆的屏蔽,DJYVP计算机电缆(总屏蔽)和DJYPVP计算机电缆(分屏蔽加总屏蔽)区别...
- python网络编程例子
- POJ 3982 序列 塔尔苏斯问题解决
- Object.keys 及表单清空
- Docker怎样提交镜像(把容器打成镜像)
- Java减少依赖_去掉JAVA部分依赖的事例
- [js] 处理字符串换行造成的json解析失败
- 计算机不小心删除怎么找回桌面,如何将桌面上误删的文件找回
- java world_Java World中的GraphQL简介
- 如何使用html如何安装,node.js – 如何使用全球安装的grunt-html?
- SparkRDD内核
- pip 升级 pip
- 接口性能测试方案分析
- 管家婆mysql 数据库_Java数据库小项目02--管家婆项目
- ❤️Windows系统❤️cmd命令+实用工具 大全❤️完整总结
- 金蝶K3开发-委外入库批量核销和反核销
- 深入理解风控中的 KS 原理
- 北美哪些跨境电商平台十大排行榜
- superset二次开发
- python英汉词典