图片像素对比OpenCV实现,实现人工分割跟算法分割图像结果的对比

来源:互联网 发布:淘宝卖家流量中心 编辑:程序博客网 时间:2024/05/17 06:55

图片对比,计算不同像素个数,已经比率。实现人工分割跟算法分割图像结果的对比,但是只能用灰度图像作为输入

 

// imageMaskComparison.cpp : 定义控制台应用程序的入口点。//// imageMaskComparison.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;int main(){String image_name,image1,image2;cout<<"input Parameters:"<<endl;cout<<"image name 1 : ";cin>>image1;cout<<"image name 2 : ";cin>>image2;Mat img1 = imread((char *)image1.c_str(), CV_LOAD_IMAGE_GRAYSCALE);Mat img2 = imread((char *)image2.c_str(), CV_LOAD_IMAGE_GRAYSCALE);//两幅图像的大小需要一致 imshow("img1",img1);imshow("img2",img2);Mat img_result1 , img_result2 , img_result ;img_result1.create(img1.rows,img1.cols,CV_8UC1);img_result1 = 255;img_result2.create(2,img1.size,CV_8UC1);img_result2 = 255;img_result.create(img2.rows,img2.cols,CV_8UC1);img_result = 0;//subtract(img1,img2, img_result1);//subtract(img2,img1, img_result2);//add(img_result1, img_result2, img_result1);absdiff(img1,img2,img_result);int init_index = 0;/*for(int i=0; i<img_result.rows; i++){for(int j=0; j<img_result.cols; j++) {if (img_result.at<uchar>(i,j)== 255){init_index++;}}}*/int count = 0;for(int i=0; i<img1.rows; i++){for(int j=0; j<img1.cols; j++) {if ( img1.at<uchar>(i,j) == img2.at<uchar>(i,j)){img_result.at<uchar>(i,j) = (uchar)255;}else{count++;img_result.at<uchar>(i,j) = (uchar)0;}}}int sum = img1.cols*img1.rows;double error_ratio = count/(double)sum;//cout<<init_index<<endl;cout<<"number of different pixel:"<<count<<endl;cout<<"error ratio: "<<error_ratio<<endl;imwrite("result.bmp",img_result);//imshow("result1", img_result1);//imshow("result2", img_result2); namedWindow( "result", CV_WINDOW_AUTOSIZE );imshow("result", img_result);waitKey();return 0;}


 

 

 

0 0
原创粉丝点击