Bạn có thể che phủ những hình ảnh sử dụng OpenCV bạn có thể kiểm tra tại OpenCV và here hoặc here
// Read the main background image
cv::Mat image= cv::imread("Background.png");
// Read the mans character image to be placed
cv::Mat character= cv::imread("character.png");
// define where you want to place the image
cv::Mat newImage;
//The 10,10 are the initial coordinates in pixels
newImage= image(cv::Rect(10,10,character.cols,character.rows));
// add it to the background, The 1 is the aplha values
cv::addWeighted(newImage,1,character,1,0,newImage);
// show result
cv::namedWindow("with character");
cv::imshow("with character",image);
//Write Image
cv::imwrite("output.png", newImage);
hoặc bạn có thể tạo ra nó như là một watermark effect
Hoặc bạn có thể dùng thử trong java như merging two images
thử dùng nhóm này ass
public class MergeImages {
public static void main(String[] args) {
File inner = new File("Inner.png");
File outter = new File("Outter.png");
try {
BufferedImage biInner = ImageIO.read(inner);
BufferedImage biOutter = ImageIO.read(outter);
System.out.println(biInner);
System.out.println(biOutter);
Graphics2D g = biOutter.createGraphics();
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f));
int x = (biOutter.getWidth() - biInner.getWidth())/2;
int y = (biOutter.getHeight() - biInner.getHeight())/2;
System.out.println(x + "x" + y);
g.drawImage(biInner, x, y, null);
g.dispose();
ImageIO.write(biOutter, "PNG", new File("Outter.png"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Nguồn
2013-08-28 11:14:10
Bạn đã thử OpenCV chưa. Đối với [ví dụ] (http://stackoverflow.com/questions/11155333/opencv-merging-two-images-using-opencv) –
là những hình ảnh khác chỉ bao gồm anh chàng, hay cả nền? nếu đó chỉ là anh chàng, thật dễ dàng để làm mà không cần bất kỳ API đặc biệt nào. nếu không, bạn sẽ cần một cái gì đó đặc biệt ... –
@androiddeveloper: Các hình ảnh khác cũng bao gồm cùng một nền. Tôi cần phải tìm sự khác biệt giữa các bức ảnh và hợp nhất chúng. –