我尝试使用 opencv 将图像复制到其他图像,但出现问题。两张图片不一样,像这样:
这是我使用的代码:
#include <opencv2\opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cmath>
#include <iostream>
#include <opencv2\opencv.hpp>
int main()
{
cv::Mat inImg = cv::imread("C:\\Users\\DUY\\Desktop\\basic_shapes.png");
//Data point copy
unsigned char * pData = inImg.data;
int width = inImg.rows;
int height = inImg.cols;
cv::Mat outImg(width, height, CV_8UC1);
//data copy using memcpy function
memcpy(outImg.data, pData, sizeof(unsigned char)*width*height);
//processing and copy check
cv::namedWindow("Test");
imshow("Test", inImg);
cv::namedWindow("Test2");
imshow("Test2", outImg);
cvWaitKey(0);
}
原文由 Robotic Vn 发布,翻译遵循 CC BY-SA 4.0 许可协议
只需使用
.clone()
cv::Mat
功能:这会成功的。您正在使用
CV_8UC1
制作仅具有一个通道的图像(这意味着只有灰色阴影是可能的),您可以使用CV_8UC3
或CV_8UC4
但只是用于复制坚持使用克隆功能。