c++ - 图像处理 - 两张图像之间的差异

标签 c++ opencv computer-vision image-manipulation

我正在尝试使用 Opencv 找出两张图像之间的差异。代码如下:

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include<iostream>

int main()
{
char a,b;
cv::Mat frame;
cv::Mat frame2;
VideoCapture cap(0);
if(!cap.isOpened())
{
    cout<<"Camera is not connected"<<endl;
    getchar();
    exit(0);

}
Mat edges;
namedWindow("Camera Feed",1);
cout<<"Ready for background?(y/Y)"<<endl;
cin>>a;
if(a=='y'||a=='Y')
{
cap>>frame;
cv::cvtColor(frame,frame,CV_RGB2GRAY);
cv::GaussianBlur(frame,frame,cv::Size(3,3),2.00,0,BORDER_DEFAULT);
}

cout<<"Ready for foreground?(y/Y)"<<endl;
cin>>b;
if(b=='y'||b=='Y')
{
cap>>frame2;
cv::cvtColor(frame2,frame2,CV_RGB2GRAY);
cv::GaussianBlur(frame2,frame2,cv::Size(3,3),2.00,0,BORDER_DEFAULT);
}

cv::absdiff(frame,frame2,frame);


imwrite("img_bw.jpg",frame);

return 0;
}

代码运行良好,但输出并不像我想要的那样完全黑白分明。我哪里错了?

最佳答案

您提供的代码将输出对应于两个图像之间各个像素差异的灰度阴影。即使没有改变的元素之间也总是会有一些小的差异,只是因为相机传感器的噪声或可变性。如果您需要纯黑色和白色,则需要选择一个差异显着的阈值,并将低于该阈值的每个像素转换为 0,将高于阈值的所有像素转换为 255。

关于c++ - 图像处理 - 两张图像之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463909/

相关文章:

c++ - 基于图像的计数算法对移动传送带上的物体进行计数

c++ - 找到 vector 中所有值之间的相似距离并将它们子集化

c++ - Hook ExtTextOut 返回意外结果

c++ - 常量声明的好奇心

opencv - 视频中的openCV人脸识别

java - 相机崩溃 : Fatal signal 6 (SIGABRT) with JNI code

python - 如何消除文本图像的倾斜并检索该图像的新边界框 Python OpenCV?

machine-learning - 使用 LIBSVM 的多类

C++ 正则表达式 : replace\d\s( with\d*(

opencv - 关于Motion Pipeline结构的问题