概述
去噪
- 中值滤波
- 输入:灰度化后的图
- Opening开运算:先腐蚀再膨胀叫开运算,作用能消除图片上的小标点。
- 先腐蚀掉一些小像素点
- 如果这些小像素点是孤岛
- 再膨胀时,这些小的像素点就不复存在了
- 如果这些小像素不点是孤岛
- 再膨胀时,这些小的像素点又被补回来一些
- 如果这些小像素点是孤岛
- 先腐蚀掉一些小像素点
- Closing闭运算:先膨胀后腐蚀。作用是消除图片上的小黑点。
背景中有极多噪点的图片,去噪比较困难。
OpenCV(14)–图像形态学操作(腐蚀、膨胀、开闭及边角检测)
轮廓线+外接矩形
找出轮廓线
不一定为规则图形
- drawContours(Mat image, java.util.List<MatOfPoint> contours, int contourIdx, Scalar color, int thickness)
- contours
- 所有轮廓线的坐标点
- color
- new Scalar(255, 255, 255): white
- thickness
- 线条厚度
- -1:填充轮廓内围区域
- 线条厚度
- contours
java.lang.Object org.opencv.imgproc.Imgproc
代码
-
画出最大轮廓线
-
画出轮廓线外接框
//画出最大轮廓线
double maxVal = 0;
int maxValIdx = 0;
for (int contourIdx = 0; contourIdx < contours.size(); contourIdx++)
{
double contourArea = Imgproc.contourArea(contours.get(contourIdx));
if (maxVal < contourArea)
{
maxVal = contourArea;
maxValIdx = contourIdx;
}
}
Imgproc.drawContours(contourImg, contours, maxValIdx, new Scalar(255,255,255), 5);
Imgcodecs.imwrite("outpath,jpg", contourImg);
//画出图中最大轮廓线的外接矩形
Mat rectMat = new Mat(image.rows(), image.cols(), image.type());
MatOfOpint2f matOfPoint2f = new MatofPoint2f(contours.get(maxValIdx).toArray());
RotatedRect rotatedRect = Imgproc.minAreaRect(matOfPoint2f );
Point[] vertices = new Point[4];
rotatedRect .points(vertices);
for (int j = 0; j < 4; j++){
//draw 4 white line, thicked 5
Imgproc.line(rectMat, vertices[j], vertices[(j+1)%4], new Scalar(255,255,255), 5);
}
Imgcodecs.imwrite("outpath,jpg", rectMat);
how to find largest contour in java opencv
opencv how to draw minAreaRect in java
最后
以上就是靓丽金鱼为你收集整理的OpenCV 去噪 轮廓线 外接矩形 Java的全部内容,希望文章能够帮你解决OpenCV 去噪 轮廓线 外接矩形 Java所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复