Java OpenCV 图像处理21 直方图反向投影

60 篇文章 19 订阅
29 篇文章 0 订阅

Java OpenCV 图像处理21 直方图反向投影

Java OpenCV-4.0.0 直方图反向投影

反向投影是反映直方图模型在目标图像中的分布情况。
简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型。

1.建立直方图模型
2.计算待测图像直方图并映射到模型中
3.从模型反向计算生成图像

加载图片imread
将图像从RGB色彩空间转换到HSV色彩空间cvtColor
计算直方图和归一化calcHist与normalize
计算反向投影图像 - calcBackProject

package com.xu.opencv;


import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfFloat;
import org.opencv.core.MatOfInt;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

import java.util.ArrayList;
import java.util.List;
/**  
 * 
 * @Title: Image.java   
 * @Description: OpenCV-4.0.0 测试文件
 * @Package com.xu.test   
 * @author: xuhyacinth     
 * @date: 2019年5月7日12:04:04   
 * @version: V-1.0.0 
 * @Copyright: 2019 xuhyacinth
 *
 */
public class Image {

    static {
    	// Java 在使用 OpenCV 前必须加载 Core.NATIVE_LIBRARY_NAME 类,否则会报错
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) throws Exception {
        calcBackProject();
    }

    /**
     * OpenCV-4.0.0 直方图反向投影
     * @return: void
     * @date: 2019年5月7日12:04:04
     */
    public static void calcBackProject() {
        Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\111.png");
        Mat hsv = new Mat();
        //1 图片转HSV
        Imgproc.cvtColor(src, hsv, Imgproc.COLOR_BGR2HSV);
        //2 计算直方图
        List<Mat> listmat = new ArrayList<>();
        listmat.add(hsv);
        Mat histimage = new Mat();
        Imgproc.calcHist(listmat, new MatOfInt(0), new Mat(), histimage, new MatOfInt(255), new MatOfFloat(0, 255));
        //3 归一化
        Core.normalize(histimage, histimage, 1, histimage.rows(), Core.NORM_MINMAX, -1, new Mat());
        //4 直方图反向投影
        Mat backimage = new Mat();
        Imgproc.calcBackProject(listmat, new MatOfInt(0), histimage, backimage, new MatOfFloat(0, 255), 2.0);
        HighGui.imshow("直方图反向投影", backimage);
        HighGui.waitKey(0);
    }

}


直方图反向投影

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值