图片像素对比OpenCV实现,实现人工分割跟算法分割图像结果的对比
时间:2022-06-17
本文章向大家介绍图片像素对比OpenCV实现,实现人工分割跟算法分割图像结果的对比,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
图片对比,计算不同像素个数,已经比率。实现人工分割跟算法分割图像结果的对比,但是只能用灰度图像作为输入
// 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;
}
- [silverlight基础]仿文字连接跑马灯效果-高手绕道
- 未解决:长字符串含…
- Iptables防火墙规则使用梳理
- “正在注册字体”问题解决
- linux下安装php的swoole扩展模块(安装后php加载不出来?)
- linux下查询域名或IP注册信息的操作记录(whois)
- 域名资讯:多枚区块链域名结拍,区块链概念火热
- 一批好米交易:qrf.com15.4万元结拍
- mysql主从同步(2)-问题梳理
- 老丁独家!前方高能,与“程序崩溃”的第一次邂逅!
- 微信可接收火车购票、退票及改签等通知啦!别忘了,春运火车票下周开售!
- 如何用SPSS分析问卷?用SPSS分析调查问卷数据的方法
- 【5】基于Log4Net的日志系统
- VMware vSphere虚拟化-VMware ESXi 5.5组件安装过程记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法