图片处理,先是将图片进行灰化处理,然后平滑处理,让像素更加的自然,平滑后,获取的轮廓更加的圆滑,最后通过轮廓查找,可以找到我们需要的目标。
代码地址
#码云地址
https://gitee.com/yellowcong/opencv
#github
https://github.com/yellowcong/opencv
处理效果
原图
灰化并平滑处理(平滑后的处理,只管的发现,图片优点模糊了)
轮廓。没有平滑处理的
轮廓图,大家可以看到,背景几乎都给干掉了,只剩下美女的这些边缘轮廓图了(这个是平滑后的)
实现代码
package yellowcong.day01_06;
import java.io.File;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
import com.yellowcong.face.FaceDemo;
/**
* 创建日期:2018年1月7日
* 创建时间:上午10:38:06
* 创建者 :yellowcong
* 机能概要:利用Opencv获取图片的轮廓
*/
public class Demo3 {
public static void main(String[] args) {
//图片地址
String inputImagePath = FaceDemo.class.getClassLoader().getResource("pics/demo.jpg").getFile();
String outPath = "D:/demo2.png";
//加载lib,这个lib的名称
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//读取图片信息
Mat image = Highgui.imread(new File(inputImagePath).getAbsolutePath());
//将rgb灰化处理
Imgproc.cvtColor(image, image,Imgproc.COLOR_BGR2GRAY);
//平滑处理
Imgproc.blur(image, image, new Size(2, 2));
//轮廓
//使用Canndy检测边缘
double lowThresh =100;//双阀值抑制中的低阀值
double heightThresh = 300;//双阀值抑制中的高阀值
Imgproc.Canny(image, image,lowThresh, heightThresh);
// 写入到文件
Highgui.imwrite(outPath, image);
}
}