android都图片mat_对比采用Android图片 - OpenCV的

I want to compare two pictures similarity

Code:

Mat mat1=Highgui.imread("/mnt/sdcard/91.png");

Mat mat2=Highgui.imread("/mnt/sdcard/92.png");

double distance = Imgproc.compareHist(mat1, mat2, Imgproc.CV_COMP_CORREL); //(this line throws an exception)

Exception information:

01-30 10:48:20.203: E/AndroidRuntime(3540): Caused by: CvException

[org.opencv.core.CvException:

/home/andreyk/OpenCV2/trunk/opencv/modules/imgproc/src/histogram.cpp:1387:

error: (-215) H1.type() == H2.type() && H1.type() == CV_32F in

function double cv::compareHist(const cv::_InputArray&, const

cv::_InputArray&, int)

Can anybody help me? How should I solve this?

解决方案

At first make sure that both images have 1 channel (if not, than convert them to grayscale with cvtColor or choose one channel witn cvSplit) and have one type, for instance, CV_8UC1.

Then calculate histograms of this images.

Example of code:

int histSize = 180;

float range[] = {0, 180};

const float* histRange = {range};

bool uniform = true;

bool accumulate = false;

cv::Mat hist1, hist2;

cv::calcHist(&mat1, 1, 0, cv::Mat(), hist1, 1, &histSize, &histRange, uniform, accumulate );

cv::calcHist(&mat2, 1, 0, cv::Mat(), hist2, 1, &histSize, &histRange, uniform, accumulate );

double result = cv::compareHist( hist1, hist2, CV_COMP_CORREL);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值