【发布时间】:2017-03-17 22:13:21
【问题描述】:
** 我正在尝试用 2 张图像(img1 的 50%+img 2 的 50%)制作图像,但结果始终是灰色图像**
#pragma once
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <cv.h>
#include <highgui.h>
#include <math.h>
void help()
{
std::cout << "Not enough parameters!" << std::endl;
system("exit");
}
int main(int argc, char ** argv){
if (argc < 3)
{
help();
system("pause");
exit(-1);
}
cv::Mat image1 = cv::imread(argv[1]);
cv::Mat image2 = cv::imread(argv[2]);
//这是我创建新图像的地方...结构
cv::Mat new_img(image1.rows, image1.cols, CV_8UC1);
for (int i = 0; i < image1.rows; i++)
{
for (int j = 0; j < image1.cols; j++)
{
//这里我用其他2个之和填充新图像
new_img.at<uchar>(cv::Point(j, i)) =
(image1.at<cv::Vec<uchar, 3>>(cv::Point(j, i)).val[0] / 2 + image2.at<cv::Vec<uchar, 3>>(cv::Point(j, i)).val[0]) / 2 +
(image1.at<cv::Vec<uchar, 3>>(cv::Point(j, i)).val[1] / 2 + image2.at<cv::Vec<uchar, 3>>(cv::Point(j, i)).val[1] / 2) +
(image1.at<cv::Vec<uchar, 3>>(cv::Point(j, i)).val[2] / 2 + image2.at<cv::Vec<uchar, 3>>(cv::Point(j, i)).val[2] / 2);
}
}
cv::namedWindow("Original1", 0);
cv::imshow("Original1", image1);
cv::namedWindow("Original2", 0);
cv::imshow("Original2", image2);
cv::namedWindow("Suprapuse", 0);
cv::imshow("Suprapuse", new_img);
cv::waitKey(0);
int a = 0;
return 0;
}
【问题讨论】:
-
首先你需要包含正确的标题!