私は他の関連する質問のほとんどを調べましたが、それらのほとんどは私のコードには当てはまりません。
私は 2D レーシング ゲームを作成しています。背景画像に 2 つの車の画像を追加する必要があります。これを行うには、画像をロードする必要がありましたMat
(そのように動作させることができました)。
問題は、私の車 (.png) の背景がフクシア色で、透明にしたいということではありません。解決策のほとんどは、私が試した画像をロードすることを含みIplImage
、どういうわけか私のコードの他の部分を台無しにしました。
#include <opencv\cv.h>
#include <stdio.h>
#include <opencv\highgui.h>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat car1, car2, BKGR;
int key = 0;
/* load images and checks if correct images loaded */
BKGR = imread("map.jpg", CV_LOAD_IMAGE_COLOR); //937x768
car1 = imread("car1.png", CV_LOAD_IMAGE_COLOR); //70x75
car2 = imread("car2.png", CV_LOAD_IMAGE_COLOR); //70x75
if((!BKGR.data)||(!car1.data)||(!car2.data))
cout << "Could not open one or more images." << endl;
else
cout << "Images were loaded succesfully." << endl;
waitKey(0);
car1.copyTo(BKGR.colRange(450,520).rowRange(630,705));
car2.copyTo(BKGR.colRange(350,420).rowRange(430,505));
waitKey(0);
cv::floodFill(car1, cv::Point(150,150), cv::Scalar(255.0, 255.0, 255.0));
cv::floodFill(car2, cv::Point(150,150), cv::Scalar(255.0, 255.0, 255.0));
/* create a window, display the result, wait for a key */
cvNamedWindow("Game", CV_WINDOW_AUTOSIZE);
imshow("Game", BKGR);
cvWaitKey(0);
return 0;
}
ですから、画像の背景を透明にする方法を知っていれば、IplImage
私は本当に感謝しています. ありがとう