java 使⽤Opencv ⼩例⼦,从合并的两个图⽚中减去⼀张图⽚将两个图⽚合并很容易(下⾯第⼆个程序是利⽤合并两张图⽚),但有时候需要从两个合并的图⽚中分离出⼀张图⽚,查了⼀下提供了图⽚相减的功能,其实不⽌图⽚相减,基本的运算都提供了,这⾥以图⽚相减为例说明。
另外附上⽤java 合并两张图⽚的程序,当然⽤opencv 实现起来更⽅便。[java]
01. package swing_interface; 02. 03. import Core; 04. import CvType; 05. import Mat; 06. import org.opencv.highgui.Highgui; 07. 08. /** 09. * 执⾏两个图⽚的相减操作,⽤于抓取⽤户所画的部分,去除本来就有的部分 10. */ 11. public class ImageSub { 12. 13. public static void sub(String two_path, String one_path, String des_path) { 14. System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 15. 16. // 读取图像,不改变图像的原始信息 17. Mat image1 = Highgui.imread(two_path, Highgui.CV_LOAD_IMAGE_COLOR); 18. Mat image2 = Highgui.imread(one_path, Highgui.CV_LOAD_IMAGE_COLOR); 19. 20. Mat image3 = new Mat(image1.size(), CvType.CV_64F); 21. Core.subtract(image2, image1, image3); 22. 23. Mat image5 = new Mat(image1.size(), CvType.CV_64F); 24. Core.bitwise_not(image3, image5); 25. 26. Highgui.imwrite(des_path, image5); 27. } 28. 29. public static void main(String[] args) { 30. String dir = Property("user.dir"); 31. ImageSub.sub(dir+"/r_pic/user_paint_two.jpg", d
ir+"/r_pic/user_paint_one.jpg", dir+"/res.jpg"); 32. } 33. 34. }
[java]
01. package merge;
02. import java.awt.Graphics2D;
03. import java.awt.image.BufferedImage;
04. import java.io.File;
05. import java.io.IOException;
06.
07. import javax.imageio.ImageIO;
08.
09. /**
10. * 图⽚拼接
11. * 把多张宽度⼀样的图⽚拼接成⼀张⼤图⽚
12. */
13. public class Merge {
14.
15. public static String path = Property("user.dir");
16.
17. public static void main(String[] args) {
18. callMergeSimple();
19. }
20.
21. public static void callMergeSimple(){
22.
为什么穿越火线玩不了23. File file1 = new File(path+"/merge1/1.jpg");
24. File file2 = new File(path+"/merge1/2.jpg");
25. File file3 = new File(path+"/merge2/res.jpg");
26. BufferedImage image1 = null,image2 = null;
27. try {
28. image1 = ad(file1);
29. image2 = ad(file2);
30. } catch (IOException e) {
31. e.printStackTrace();
32. }
33. mergeSimple(image1,image2,100,300,file3);
34. }
35.
36. public static boolean mergeSimple(BufferedImage image1, BufferedImage image2, int posw, int posh, File fileOutput) {
37.
38. //合并两个图像
39. int w1 = Width();
40. int h1 = Height();
41. int w2 = Width();
42. int h2 = Height();
43.
44. BufferedImage imageSaved = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_ARGB);
45. Graphics2D g2d = ateGraphics();
46. g2d.drawImage(image1, null, 0, 0);
47.
48. for (int i = 0; i < w2; i++) {
49. for (int j = 0; j < h2; j++) {
50. int rgb1 = RGB(i + posw, j + posh);
51. int rgb2 = RGB(i, j);
52.
53. if (rgb1 != rgb2) {
54. rgb2 = rgb1 & rgb2;ip属地是现在所在的地址么
55. }
我的ip地址56. imageSaved.setRGB(i + posw, j + posh, rgb2);
2023年元旦放假通知57. }
58. }
59.
60. boolean b = false;
康巴什新区61. try {
62. b = ImageIO.write(imageSaved, "png", fileOutput);
游戏中前期防御塔63. } catch (IOException ie) {
64. ie.printStackTrace();
65. }
66. return b;
67. }
68. }
69.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论