`
eimhee
  • 浏览: 2137257 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个JAVA图形缩放处理工具类

阅读更多
 调用的例子
  1. import java.io.FileOutputStream;
  2. import java.io.IOException;

  3. import javax.imageio.ImageIO;

  4. public class T {
  5.   public static void main(String[] args) throws Exception, IOException {
  6.     ImageIO.write(ImageUtils.resizeImage("d:/www.java2000.net.gif", ImageUtils.IMAGE_GIF, 3020),
  7.         "JPEG"new FileOutputStream("d:/test.jpg"));
  8.   }
  9. }

源代码,如果你复制源代码不方便,来这里:http://www.java2000.net/p10821
  1. import java.awt.Dimension;
  2. import java.awt.Image;
  3. import java.awt.image.BufferedImage;
  4. import java.awt.image.PixelGrabber;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import java.util.Iterator;
  8. import java.util.Locale;
  9. import javax.imageio.IIOImage;
  10. import javax.imageio.ImageIO;
  11. import javax.imageio.ImageWriteParam;
  12. import javax.imageio.ImageWriter;
  13. import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
  14. import javax.imageio.stream.ImageOutputStream;
  15. public class ImageUtils {
  16.   public static final int IMAGE_UNKNOWN = -1;
  17.   public static final int IMAGE_JPEG = 0;
  18.   public static final int IMAGE_PNG = 1;
  19.   public static final int IMAGE_GIF = 2;
  20.   /**
  21.    * Resizes an image
  22.    * 
  23.    * @param imgName
  24.    *          The image name to resize. Must be the complet path to the file
  25.    * @param type
  26.    *          int
  27.    * @param maxWidth
  28.    *          The image's max width
  29.    * @param maxHeight
  30.    *          The image's max height
  31.    * @return A resized <code>BufferedImage</code>
  32.    */
  33.   public static BufferedImage resizeImage(String imgName, int type, int maxWidth, int maxHeight) {
  34.     try {
  35.       return resizeImage(ImageIO.read(new File(imgName)), type, maxWidth, maxHeight);
  36.     } catch (IOException e) {
  37.       e.printStackTrace();
  38.       return null;
  39.     }
  40.   }
  41.   /**
  42.    * Resizes an image.
  43.    * 
  44.    * @param image
  45.    *          The image to resize
  46.    * @param maxWidth
  47.    *          The image's max width
  48.    * @param maxHeight
  49.    *          The image's max height
  50.    * @return A resized <code>BufferedImage</code>
  51.    * @param type
  52.    *          int
  53.    */
  54.   public static BufferedImage resizeImage(BufferedImage image, int type, int maxWidth, int maxHeight) {
  55.     Dimension largestDimension = new Dimension(maxWidth, maxHeight);
  56.     // Original size
  57.     int imageWidth = image.getWidth(null);
  58.     int imageHeight = image.getHeight(null);
  59.     float aspectRatio = (float) imageWidth / imageHeight;
  60.     if (imageWidth > maxWidth || imageHeight > maxHeight) {
  61.       if ((float) largestDimension.width / largestDimension.height > aspectRatio) {
  62.         largestDimension.width = (int) Math.ceil(largestDimension.height * aspectRatio);
  63.       } else {
  64.         largestDimension.height = (int) Math.ceil(largestDimension.width / aspectRatio);
  65.       }
  66.       imageWidth = largestDimension.width;
  67.       imageHeight = largestDimension.height;
  68.     }
  69.     return createHeadlessSmoothBufferedImage(image, type, imageWidth, imageHeight);
  70.   }
  71.   /**
  72.    * Saves an image to the disk.
  73.    * 
  74.    * @param image
  75.    *          The image to save
  76.    * @param toFileName
  77.    *          The filename to use
  78.    * @param type
  79.    *          The image type. Use <code>ImageUtils.IMAGE_JPEG</code> to save as
  80.    *          JPEG images, or <code>ImageUtils.IMAGE_PNG</code> to save as PNG.
  81.    * @return <code>false</code> if no appropriate writer is found
  82.    */
  83.   public static boolean saveImage(BufferedImage image, String toFileName, int type) {
  84.     try {
  85.       return ImageIO.write(image, type == IMAGE_JPEG ? "jpg" : "png"new File(toFileName));
  86.     } catch (IOException e) {
  87.       e.printStackTrace();
  88.       return false;
  89.     }
  90.   }
  91.   /**
  92.    * Compress and save an image to the disk. Currently this method only supports
  93.    * JPEG images.
  94.    * 
  95.    * @param image
  96.    *          The image to save
  97.    * @param toFileName
  98.    *          The filename to use
  99.    * @param type
  100.    *          The image type. Use <code>ImageUtils.IMAGE_JPEG</code> to save as
  101.    *          JPEG images, or <code>ImageUtils.IMAGE_PNG</code> to save as PNG.
  102.    */
  103.   public static void saveCompressedImage(BufferedImage image, String toFileName, int type) {
  104.     try {
  105.       if (type == IMAGE_PNG) {
  106.         throw new UnsupportedOperationException("PNG compression not implemented");
  107.       }
  108.       Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
  109.       ImageWriter writer;
  110.       writer = (ImageWriter) iter.next();
  111.       ImageOutputStream ios = ImageIO.createImageOutputStream(new File(toFileName));
  112.       writer.setOutput(ios);
  113.       ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
  114.       iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
  115.       iwparam.setCompressionQuality(0.7F);
  116.       writer.write(nullnew IIOImage(image, nullnull), iwparam);
  117.       ios.flush();
  118.       writer.dispose();
  119.       ios.close();
  120.     } catch (IOException e) {
  121.       e.printStackTrace();
  122.     }
  123.   }
  124.   /**
  125.    * Creates a <code>BufferedImage</code> from an <code>Image</code>. This
  126.    * method can function on a completely headless system. This especially
  127.    * includes Linux and Unix systems that do not have the X11 libraries
  128.    * installed, which are required for the AWT subsystem to operate. This method
  129.    * uses nearest neighbor approximation, so it's quite fast. Unfortunately, the
  130.    * result is nowhere near as nice looking as the
  131.    * createHeadlessSmoothBufferedImage method.
  132.    * 
  133.    * @param image
  134.    *          The image to convert
  135.    * @param w
  136.    *          The desired image width
  137.    * @param h
  138.    *          The desired image height
  139.    * @return The converted image
  140.    * @param type
  141.    *          int
  142.    */
  143.   public static BufferedImage createHeadlessBufferedImage(BufferedImage image, int type, int width,
  144.       int height) {
  145.     if (type == ImageUtils.IMAGE_PNG && hasAlpha(image)) {
  146.       type = BufferedImage.TYPE_INT_ARGB;
  147.     } else {
  148.       type = BufferedImage.TYPE_INT_RGB;
  149.     }
  150.     BufferedImage bi = new BufferedImage(width, height, type);
  151.     for (int y = 0; y < height; y++) {
  152.       for (int x = 0; x < width; x++) {
  153.         bi.setRGB(x, y, image.getRGB(x * image.getWidth() / width, y * image.getHeight() / height));
  154.       }
  155.     }
  156.     return bi;
  157.   }
  158.   /**
  159.    * Creates a <code>BufferedImage</code> from an <code>Image</code>. This
  160.    * method can function on a completely headless system. This especially
  161.    * includes Linux and Unix systems that do not have the X11 libraries
  162.    * installed, which are required for the AWT subsystem to operate. The
  163.    * resulting image will be smoothly scaled using bilinear filtering.
  164.    * 
  165.    * @param source
  166.    *          The image to convert
  167.    * @param w
  168.    *          The desired image width
  169.    * @param h
  170.    *          The desired image height
  171.    * @return The converted image
  172.    * @param type
  173.    *          int
  174.    */
  175.   public static BufferedImage createHeadlessSmoothBufferedImage(BufferedImage source, int type,
  176.       int width, int height) {
  177.     if (type == ImageUtils.IMAGE_PNG && hasAlpha(source)) {
  178.       type = BufferedImage.TYPE_INT_ARGB;
  179.     } else {
  180.       type = BufferedImage.TYPE_INT_RGB;
  181.     }
  182.     BufferedImage dest = new BufferedImage(width, height, type);
  183.     int sourcex;
  184.     int sourcey;
  185.     double scalex = (double) width / source.getWidth();
  186.     double scaley = (double) height / source.getHeight();
  187.     int x1;
  188.     int y1;
  189.     double xdiff;
  190.     double ydiff;
  191.     int rgb;
  192.     int rgb1;
  193.     int rgb2;
  194.     for (int y = 0; y < height; y++) {
  195.       sourcey = y * source.getHeight() / dest.getHeight();
  196.       ydiff = scale(y, scaley) - sourcey;
  197.       for (int x = 0; x < width; x++) {
  198.         sourcex = x * source.getWidth() / dest.getWidth();
  199.         xdiff = scale(x, scalex) - sourcex;
  200.         x1 = Math.min(source.getWidth() - 1, sourcex + 1);
  201.         y1 = Math.min(source.getHeight() - 1, sourcey + 1);
  202.         rgb1 = getRGBInterpolation(source.getRGB(sourcex, sourcey), source.getRGB(x1, sourcey),
  203.             xdiff);
  204.         rgb2 = getRGBInterpolation(source.getRGB(sourcex, y1), source.getRGB(x1, y1), xdiff);
  205.         rgb = getRGBInterpolation(rgb1, rgb2, ydiff);
  206.         dest.setRGB(x, y, rgb);
  207.       }
  208.     }
  209.     return dest;
  210.   }
  211.   private static double scale(int point, double scale) {
  212.     return point / scale;
  213.   }
  214.   private static int getRGBInterpolation(int value1, int value2, double distance) {
  215.     int alpha1 = (value1 & 0xFF000000) >>> 24;
  216.     int red1 = (value1 & 0x00FF0000) >> 16;
  217.     int green1 = (value1 & 0x0000FF00) >> 8;
  218.     int blue1 = (value1 & 0x000000FF);
  219.     int alpha2 = (value2 & 0xFF000000) >>> 24;
  220.     int red2 = (value2 & 0x00FF0000) >> 16;
  221.     int green2 = (value2 & 0x0000FF00) >> 8;
  222.     int blue2 = (value2 & 0x000000FF);
  223.     int rgb = ((int) (alpha1 * (1.0 - distance) + alpha2 * distance) << 24)
  224.         | ((int) (red1 * (1.0 - distance) + red2 * distance) << 16)
  225.         | ((int) (green1 * (1.0 - distance) + green2 * distance) << 8)
  226.         | (int) (blue1 * (1.0 - distance) + blue2 * distance);
  227.     return rgb;
  228.   }
  229.   /**
  230.    * Determines if the image has transparent pixels.
  231.    * 
  232.    * @param image
  233.    *          The image to check for transparent pixel.s
  234.    * @return <code>true</code> of <code>false</code>, according to the result
  235.    */
  236.   public static boolean hasAlpha(Image image) {
  237.     try {
  238.       PixelGrabber pg = new PixelGrabber(image, 0011false);
  239.       pg.grabPixels();
  240.       return pg.getColorModel().hasAlpha();
  241.     } catch (InterruptedException e) {
  242.       return false;
  243.     }
  244.   }
  245. }

分享到:
评论
1 楼 zzzsmail 2009-01-21  
[img][/img][url][/url][flash=200,200][/flash][size=xx-small][/size][align=left][/align][/color][color=cyan][/color][color=darkblue]  

相关推荐

    Matlab Toolbox for Interval Type-2 Fuzzy Logic Systems.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    基于java的大学生第二课堂设计与实现.docx

    基于java的大学生第二课堂设计与实现.docx

    vue+SpringBoot442大学校园快递代取管理系统的设计与实现java毕业设计源码含论文.rar

    jdk版本:jdk1.8+ 前端:vue.js+ElementUI 开发工具:IDEA 或者eclipse都支持 编程语言: java 框架支持:springboot 数据库: mysql 版本不限 数据库工具:Navicat/SQLyog都可以 详细技术:java+springboot+vue+MYSQL+MAVEN 前端采用的Vue框架,后端采用java语言,sprinboot框架,mybatis操作数据源,使用软件:idea,eclipse、MySQL。完成了用户登录管理等模块的设计与实现。完成了系统数据库的设计,并基于MySQL数据库管理系统

    win和android安卓平台的播放器 .zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    application.properties

    application.properties

    【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    使用 javaEE,MySQL,jsp,jQuery,bootstrap,华为云搭建的小网站——奇异果物品管理平台(毕设&课设&

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    MATLAB 中的工具箱用于对架空和地下输电线路进行建模(单位长度参数、传播特性、频率扫描、瞬态模拟).rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    linux常用命令大全.docx

    linux常用命令大全

    罗彩琳23002374.cpp

    罗彩琳23002374.cpp

    基于ASP的房屋租售信息管理系统的设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    使用SSM框架, MySql数据库, 食疗药膳推荐系统(首次上传项目记录).zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    java基于ssm+vue学生奖惩管理系统源码 带毕业论文

    【资源说明】 1、开发环境:ssm框架;内含Mysql数据库;VUE技术 2、项目代码都经过严格调试,代码没有任何bug!下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。

    ASP网上购物系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项目3比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、本项 3目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    MES APP应用系统(一个基于ReactNative的工厂MES移动APP).zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    莱斯衰落信道下面向虚拟现实应用的无人机 MEC 系统的延迟优化matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    用于时间序列的通用深度自动编码器Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    1001001000000000000000000000000000000000000000

    1001001000000000000000000000000000000000000000

    基于QT的缺陷检测系统,包括图像检测以及目标检测两个部分,支持ONNXRuntime加速(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    基于角点提取和机器学习的古陶瓷分类CV项目.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

Global site tag (gtag.js) - Google Analytics