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

简介: 图片对比,计算不同像素个数,已经比率。实现人工分割跟算法分割图像结果的对比,但是只能用灰度图像作为输入   // imageMaskComparison.cpp : 定义控制台应用程序的入口点。

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

 

// 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;
}


 

 

 

相关文章
|
29天前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
177 0
|
3月前
|
编解码 算法
改进SIFT算法实现光学图像和SAR图像配准
改进SIFT算法实现光学图像和SAR图像配准
|
29天前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
142 8
|
2月前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
115 1
|
2月前
|
存储 监控 算法
基于文化优化算法图像量化(Matlab代码实现)
基于文化优化算法图像量化(Matlab代码实现)
|
2月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
2月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
2月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
132 0
|
2月前
|
机器学习/深度学习 监控 并行计算
【图像增强】局部对比度增强的CLAHE算法直方图增强研究(Matlab代码实现)
【图像增强】局部对比度增强的CLAHE算法直方图增强研究(Matlab代码实现)
292 0
|
4月前
|
机器学习/深度学习 监控 算法
基于单尺度Retinex和多尺度Retinex的图像增强算法实现
基于单尺度Retinex(SSR)和多尺度Retinex(MSR)的图像增强算法实现
391 1

热门文章

最新文章