【发布时间】:2016-12-13 13:47:04
【问题描述】:
我有两张照片: 和
我发现这些照片之间存在差异。但是这些差异包括光线的变化,相机的抖动等。我只想看到差异照片中的那个人。我写了一个阈值,我成功了。但是这个阈值并不能纠正其他照片。由于我在 stackoverflow 中的声誉,我无法展示错误的示例。你可以在其他照片上运行我的代码,你可以看到这些障碍。我的代码如下。我还能怎么做这个阈值?
#include <Windows.h>
#include <opencv\highgui.h>
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main() {
Mat siyah;
Mat resim = imread("C:/Users/toshiba/Desktop/z.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat resim2 = imread("C:/Users/toshiba/Desktop/t.jpg", CV_LOAD_IMAGE_GRAYSCALE);
if (resim.empty() || resim2.empty())
{
cout << "Dosya Açılamadı " << "\n";
return 0;
}
for (int i = 0; i < resim.rows; i++)
{
for (int j = 0; j <resim.cols; j++)
{
if (resim.data[resim.channels()*(resim.cols*(i)+
(j))] - resim2.data[resim2.channels()*(resim2.cols*(i)+
(j))]>30) {
resim.data[resim.channels()*(resim.cols*(i)+
(j))] = 255;
}
else
resim.data[resim.channels()*(resim.cols*(i)+
(j))] = 0;
//inRange(resim, 150, 255, siyah);
}
}
//inRange(resim, 150, 255, siyah);
namedWindow("Resim", CV_WINDOW_NORMAL);
imshow("Resim", resim);
waitKey();
system("PAUSE");
waitKey();
return 0;
}
【问题讨论】:
-
您的问题没有简单的答案。图像处理中几乎没有任务可以通过对所有图像应用相同的全局阈值来解决。在不知道图像范围和必须处理的噪音的情况下,不可能给您太多建议。作为初学者,如果您不处理压缩图像,它将有很大帮助。那么你有更多的信息可以使用。
标签: c++ visual-studio opencv image-processing pixels