openCV-C++图像总和
openCV-C++ image sum
本文关键字:图像 openCV-C++ 更新时间:2023-10-16
**我试图用两张图像制作一张图像(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;
}
您将new_img设置为CV_8UC1,结果为灰色。如果要将两种颜色的图像添加为新图像,可以使用addWeight并将两种权重设置为0.5。
新图像必须是CV_8CV3(三个通道),因为您的imag1和img2是彩色vec,其中3是三个通道=>您的图像是彩色而非灰度(CV_8CV1)。但我不确定:D
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 如何在 OpenCV 中将图像与另一个图像相关联
- 如何在 OpenCV c++ 中压缩 TIFF 格式的图像?
- OpenCV - 如何在灰度图像上应用 Kmeans?
- 阅读和处理图像(OpenCV/C )
- cv::findContours 正在修改源图像 OpenCV 2.3
- 将图像替换为更大尺寸的图像 (OpenCV)
- 显示像素值已更改的图像openCV
- 具有积分图像的快速模糊图像(OpenCV)
- 扫描图像OpenCV上的文档检测
- 使用cv::Mat图像(opencv)如何检测对象
- 写作和展示图像OpenCV
- 从文件夹中读取图像(OpenCV)
- 无法保存从网络摄像头捕获的图像(OpenCV 2.3 的 imwrite 编译错误)
- 旋转不变的多个模板出现在图像Opencv