Wie lösche ich einen weißen Hintergrund in OpenCV mit C++?
Dieses Programm zeigt sequenzielle Bilder mit Bildern.
Wie Sie jedoch sehen, hat das Wurmbild einen weißen Hintergrund.
Aber ich habe bereits den Hintergrund des Wurmbildes geschnitten, also ist der aktuelle Hintergrund der Wurmbilder transparent.
Ich möchte den Hintergrund des Wurmbildes transparent verarbeiten und das Wurmbild nicht grau, sondern bunt darstellen.
Ich habe versucht, in cvtColor (Bild, srcBGR, CV_BGR2BGRA) zu bearbeiten, trat jedoch Fehler auf.
Hier ist der Code.
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/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;
}
Mat image = imread("images/worm.png", 0);
cv::resize(image,image,Size(70, 120));
Mat frame;
while(1){
cap >> frame;
Mat newFrame = frame.clone();
int cx = (newFrame.cols - 70)/2;
if (!image.empty()) {
// Get a BGR version of the face, since the output is BGR color
Mat srcBGR = Mat(image.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, 120);
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;
}
Funktioniert dieser Code? Fehlermeldungen werden gedruckt ... Also, ich versuche den Fehler zu erkennen !! Vielen Dank!! –
Ja, arbeitete für mich. Welchen Fehler bekommst du? –
Entschuldigung, ich hatte einen Fehler ... Ihr Code funktioniert auch für mich. Wirklich danke dir!!! –