Я пытаюсь наложить изображение поверх видеозахвата моей программы с помощью OpenCV, но у меня возникли проблемы с его работой. Я задал интересующую вас область в исходном фрейме, взятом из веб-камеры в виде прямоугольника. Затем я копирую его в исходный кадр. Однако он никогда не появляется на новом кадре, захваченном веб-камерой. Я тестировал его, и изображение загружается правильно, но по какой-то причине оно не копируется в новый кадр.Наложение изображения в OpenCV
код ниже в C++:
#include<opencv2/core/core.hpp>
#include<opencv2/contrib/contrib.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
int main(){
VideoCapture cap;
cap.open(0);
if(!cap.isOpened()){
cerr << "Error opening the webcam!" << endl;
return -1;
}
for(;;){
Mat frame;
cap>>frame;
Mat newFrame;
frame.copyTo(newFrame);
Mat image = imread("C:\\User\\Desktop\\images\\image.png");
int cx = (newFrame.cols - 70)/2;
if (image.data) {
// Get a BGR version of the face, since the output is BGR color
Mat srcBGR = Mat(face.size(), CV_8UC3);
cvtColor(image, srcBGR, CV_GRAY2BGR);
// Get the destination ROI (and make sure it is within the image)
Rect dstRC = Rect(cx, newFrame.rows/2, 70, 70);
Mat dstROI = newFrame(dstRC);
// Copy the pixels from src to dst.
srcBGR.copyTo(dstROI);
}
imshow("frame", newFrame);
char key = (char) waitKey(30);
// Exit this loop on escape:
if(key == 27)
break;
}
return 0;
}
Любые предложения или помощь будет оценена. Благодарю.
На самом деле так было раньше, и это не сработало. Я тестировал его по-другому и забыл изменить его. Я просто изменил его в примере кода обратно на srcBGR.copyTo (dstROI) – TeddyG
Хорошо, я отредактировал свой ответ, я протестировал этот код, и он работает. –
Спасибо. Проблема заключалась в том, что я не изменял размер изображения в соответствии с размером адресата. Еще раз спасибо. – TeddyG