精华内容
下载资源
问答
  • python制作不同形状的中文词云
    千次阅读
    2018-02-25 22:57:33
    """
    Masked wordcloud
    ================
    Using a mask you can generate wordclouds in arbitrary shapes.
    """
    
    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    
    from wordcloud import WordCloud, STOPWORDS
    ''' 这里我想去掉数据中的“回复”这个词,因为它属于杂质,直接去掉会报编码错误,
    用# -*- coding: UTF-8 -*-不能解决,于是找到这个方法,改变默认的编码方式,并不太懂什么意思'''
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    # Read the whole text.
    #text = open(path.join(d, 'alice.txt')).read()
    
    text=open('fzw.txt').read()
    
    # read the mask image
    # taken from
    # http://www.stencilry.org/stencils/movies/alice%20in%20wonderland/255fk.jpg
    alice_mask = np.array(Image.open("alice_mask.png"))
    #这里添加想要的形状,用png图片
    #stopwords = set(STOPWORDS)
    #stopwords.add("said")
    '''background_color="white"'''
    wc = WordCloud( background_color="white",max_words=2000, mask=alice_mask,              font_path="minisong.ttf",max_font_size=40,scale=0.8) #mask参数指定词云形状
    # generate word cloud
    # generate word cloud
    mytext=" ".join(jieba.cut(text))
    mytext=mytext.replace('回复',' ')
    wc.generate(mytext)
    
    # store to file
    wc.to_file("alice.png")
    
    # show
    plt.imshow(wc, interpolation='bilinear')
    plt.axis("off")
    #plt.figure()
    #plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
    #plt.axis("off")
    plt.show()
    
    # The pil way (if you don't have matplotlib)
    # image = wordcloud.to_image()
    # image.show()

    这里写图片描述

    更多相关内容
  • 于是写了份自动生成不同大小形状图片的服务。 代码地址为 。 demo访问地址 。 原理 主要用到的技术是koa,koa-router和画布。 用koa启动一个webserver服务,用了logger中间键来方便查看记录。 const logger = ...
  • 电脑怎么把将图片裁剪成不同形状?.docx
  • 煤屑瓦斯解吸扩散规律的研究对应用解吸法测定煤层瓦斯含量以及预测煤层突出危险性有着重要的...随着解吸时间的延长,煤屑形状的不同对解吸扩散规律影响趋于变小,不同形状的煤屑颗粒内部瓦斯有效扩散形状逐渐近似于球形。
  • 一,图片裁剪。 使用Graphics Context图形上下文进行图片裁剪操作,结合...(1),在Rect中画出对应的形状路径。  //绘制珠宝形路径  +(UIBezierPath *)jewelryPathWithInRect:(CGRect)rect;  //绘制三角形路径  +

    源码地址:点击打开链接

    一,图片裁剪。

    使用Graphics Context图形上下文进行图片裁剪操作,结合UIBezierPath画出路径,然后在CGContextRef中按照路径裁剪。

    (1),在Rect中画出对应的形状路径。
        //绘制珠宝形路径
       +(UIBezierPath *)jewelryPathWithInRect:(CGRect)rect;
       //绘制三角形路径
       +(UIBezierPath *)trianglePathWithInRect:(CGRect)rect;
      //绘制五角星路径
      +(UIBezierPath *)fivePointStarPathWithInRect:(CGRect)rect;
      //绘制椭圆锯齿形路径
      +(UIBezierPath*)sawtoothPathWithInRect:(CGRect)rect;
      //绘制心形路径

      +(UIBezierPath *)heartPathWithInRect:(CGRect)rect;

    (2),根据路径裁剪图片。

        -(UIImage*)clipWithPath:(UIBezierPath*)path InRect:(CGRect)rect;

       效果:

       


    二,图片添加相框。
        图片添加关键在与两张图片的叠加,使用Graphics Context图形进行图片叠加,把相框图片盖在原有图片之上,合成一桩图片。
        (1),把原图片按相框大小做合适的矩形裁剪。
            -(UIImage*)frameSquareClipInRect:(CGRect)rect;
    (2),把原图和相框叠加成新图片。

           -(UIImage*)frameAddImage:(UIImage*)topImage;


    效果:

     


    展开全文
  • Android实现特定形状图片

    万次阅读 2020-03-04 16:55:47
    在上篇文章中,我们实现了圆形图片圆角图片,基本上已经满足了日常开发...一、使用Canvas的clipPath方法直接把Canvas剪裁成我们想要的形状。例如 1.心形图片 公式:t 表示点(x,y)在坐标系中的角度 x = 16 sin^3 t y...

    https://blog.csdn.net/YX_BB/article/details/104561359
    在上篇文章中,我们实现了圆形图片圆角图片,基本上已经满足了日常开发中的需要。那如果想要更多的图形效果该怎么办呢?与我们在现实中的绘图方式一致,用笔(Paint)在纸(Canvas)上按照一定的路径(Path),即可形成特定的图画。一个图形的Path是固定,所以,我们可以通过改变Paint和Canvas来实现想要的效果。如下
    在这里插入图片描述

    这里以心形图片为例,展示几种不同的实现方法,首先先实现心形图片的Path。

    公式:t 表示点(x,y)在坐标系中的角度
    x = 16 sin^3 t
    y = 13 cos t - 5 cos 2t - 2 cos 3t - cos 4t

       /**
         * 心形曲线
         */
        private Path getHeartPath() {
            int n = 100;
            // 计算缩放比例
            float scale = getWidth() / 17f / 2f;
            // 将360度平均分为 100份,每个弧度对应一个点
            float interval = (float) (2 * Math.PI / 100);
            // 定义初始弧度degree
            float degree = 0;
            Point[] points = new Point[n];
            for (int i = 0; i < n; i++) {
                // 根据心形曲线公式,计算出每个弧度对应的点的坐标
                // 当degree = 90度的时候,x取最大值16。当degree = 180度的时候,y取最小值 -17。
                // 即保证y * scale * 17 * 2 = height的时候,曲线的与控件相切,以此计算出scale的值
                float x = (float) ((16 * Math.pow(Math.sin(degree), 3)) * scale);
                float y = (float) ((13 * Math.cos(degree) - 5 * Math.cos(2 * degree) - 2 * Math.cos(3 * degree) - Math.cos(4 * degree)) * scale);
                points[i] = new Point(x + getWidth() / 2f, -y + getHeight() / 2f);
                degree = degree + interval;
            }
            // 连线
            Path path = new Path();
            path.moveTo(points[0].x, points[0].y);
            for (int i = 1; i < n; i++) {
                path.lineTo(points[i].x, points[i].y);
            }
            path.close();
            return path;
        }
    

    思路1:使用Canvas的clipPath方法直接剪裁Canvas。

    优点简单粗暴,可以适应于各种控件且不需要考虑绘制中的各种情形。缺点是剪裁之后,Canvas的绘制区域将被Path限制,任何的内容及后续扩展都局限在了这个Path之内。且clipPath方法不支持硬件加速,当应用开启了硬件加速时,设备在4.0.4与4.0.3这样的版本上使用图片剪裁功能的时候会crash。
    重写onDraw()方法

    @Override
        protected void onDraw(Canvas canvas) {
            // 调用父类的绘制方法之前直接根据模式裁剪Canvas
            canvas.clipPath(getHeartPath());
            super.onDraw(canvas);
        }
    

    控件继承自ImageView,注意要在super.onDraw()之前剪裁Canvas。否则Canvas已经将图片绘制到了View中,这个时候再剪裁Canvas毫无意义

    思路2:使用Paint.setShader方法,只给指定区域上色。

    Shader在三维软件中称之为着色器,就是用来给空白图形上色用的。
    关于Shader的详细介绍可以参考
    https://blog.csdn.net/harvic880925/article/details/52039081
    首先获取ImageView上的Drawable,将Drawable转化成Bitmap,然后给Paint设置BitmapShader着色器,Bitmap在指定Path中的区域将被上色,Path之外的区域会被忽略。这种方式不会改变Canvas,也不会对后续的绘制工作造成影响
    重写onDraw()方法

    @Override
        protected void onDraw(Canvas canvas) {
            if (mBitmap == null) {
                mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
                Canvas drawCanvas = new Canvas(mBitmap);
                Drawable drawable = getDrawable();
                if (drawable != null) {
                    drawable.draw(drawCanvas);
                }
    
                mPaint.setShader(new BitmapShader(mBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT));
                canvas.drawPath(getHeartPath(), mPaint);
            }
        }
    

    注意:使用这种方式,不需要再使用super.onDraw(canvas)

    思路3:使用PorterDuffXfermode混合图层

    分别绘制图片图层,与路径图层。然后将两个图层混合。

     @Override
        protected void onDraw(Canvas canvas) {
            // 图层混合绘制方式
            srcBmp = makeSrc();
            dstBmp = makeDst();
            int layerID = canvas.saveLayer(0, 0, getWidth(), getHeight(), mPaint, Canvas.ALL_SAVE_FLAG);
            canvas.drawBitmap(srcBmp, 0, 0, mPaint);
            mPaint.setXfermode(xfermode);
            canvas.drawBitmap(dstBmp, 0, 0, mPaint);
            mPaint.setXfermode(null);
            canvas.restoreToCount(layerID);
        }
        
       /**
         * 源图层
         */
        private Bitmap makeSrc() {
            Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            Drawable drawable = getDrawable();
            if (drawable != null) {
                drawable.draw(canvas);
            }
            return bitmap;
        }
    
        /**
         * 目标图层
         */
        private Bitmap makeDst() {
            Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            canvas.drawPath(getHeartPath(), paint);
            return bitmap;
        }
    

    注意:

    int layerID = canvas.saveLayer(0, 0, getWidth(), getHeight(), mPaint, Canvas.ALL_SAVE_FLAG);
    canvas.restoreToCount(layerID);
    

    如果不加如这段代码,在进行图层混合的时候,源图层将会被直接绘制在原始Canvas上。然后再绘制目标图层的时候,会与整个原始Canvas取交集,这时会将非交集区域的颜色全部清空,从而漏出Activity的底色。
    在这里插入图片描述
    在加入这段代码之后,Canvas.saveLayer(),会生成新的全透明的Bitmap,后续的绘制都是在这个新图层上完成的。混合之后再绘制在原始Canvas上。这时边缘区域显示的颜色为ImageView父布局的背景色。简单理解两者的区别如下
    未使用saveLayer时,3 - 2 - 1 = 0
    而使用saveLayer时,3 - (2 - 1) = 2
    显然两者的计算结果不一样了,而后者才是我们真正需要的绘制流程。
    关于saveLayer()的用法可以参考
    https://blog.csdn.net/harvic880925/article/details/51317746

    完整代码

    public class ShapeImageView extends AppCompatImageView {
    
        private Paint mPaint;
        private Bitmap srcBmp;
        private Bitmap dstBmp;
        private Xfermode xfermode;
    
        public ShapeImageView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
            initData();
        }
    
        private void initData() {
            mPaint = new Paint();
            xfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
        }
    
    
        @Override
        protected void onDraw(Canvas canvas) {
            // 图层混合绘制方式
            srcBmp = makeSrc();
            dstBmp = makeDst();
            int layerID = canvas.saveLayer(0, 0, getWidth(), getHeight(), mPaint, Canvas.ALL_SAVE_FLAG);
            canvas.drawBitmap(srcBmp, 0, 0, mPaint);
            mPaint.setXfermode(xfermode);
            canvas.drawBitmap(dstBmp, 0, 0, mPaint);
            mPaint.setXfermode(null);
            canvas.restoreToCount(layerID);
    
    
            // BitmapShader绘制方式
    //        if (srcBmp == null) {
    //            srcBmp = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
    //            Canvas drawCanvas = new Canvas(srcBmp);
    //            Drawable drawable = getDrawable();
    //            if (drawable != null) {
    //                drawable.draw(drawCanvas);
    //            }
    //
    //            mPaint.setShader(new BitmapShader(srcBmp, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT));
    //            canvas.drawPath(getHeartPath(), mPaint);
    //        }
            // clipPath绘制方式
    //        canvas.clipPath(getHeartPath());
    //        super.onDraw(canvas);
        }
    
        /**
         * 源图层
         */
        private Bitmap makeSrc() {
            Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            Drawable drawable = getDrawable();
            if (drawable != null) {
                drawable.draw(canvas);
            }
            return bitmap;
        }
    
        /**
         * 目标图层
         */
        private Bitmap makeDst() {
            Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            canvas.drawPath(getHeartPath(), paint);
            return bitmap;
        }
    
    
        /**
         * 画心形曲线
         */
        private Path getHeartPath() {
            int n = 100;
            // 计算缩放比例
            float scale = getWidth() / 17f / 2f;
            // 将360度平均分为 100份,每个弧度对应一个点
            float interval = (float) (2 * Math.PI / 100);
            // 定义初始弧度degree
            float degree = 0;
            Point[] points = new Point[n];
            for (int i = 0; i < n; i++) {
                // 根据心形曲线公式,计算出每个弧度对应的点的坐标
                // 当degree = 90度的时候,x取最大值16。当degree = 180度的时候,y取最小值 -17。
                // 即保证y * scale * 17 * 2 = height的时候,曲线的与控件相切,以此计算出scale的值
                float x = (float) ((16 * Math.pow(Math.sin(degree), 3)) * scale);
                float y = (float) ((13 * Math.cos(degree) - 5 * Math.cos(2 * degree) - 2 * Math.cos(3 * degree) - Math.cos(4 * degree)) * scale);
                points[i] = new Point(x + getWidth() / 2f, -y + getHeight() / 2f);
                degree = degree + interval;
            }
            // 连线
            Path path = new Path();
            path.moveTo(points[0].x, points[0].y);
            for (int i = 1; i < n; i++) {
                path.lineTo(points[i].x, points[i].y);
            }
            path.close();
            return path;
        }
    
        public static class Point {
            float x;
            float y;
    
            public Point(float x, float y) {
                this.x = x;
                this.y = y;
            }
        }
    }
    
    展开全文
  • numpy 不同形状(shape)的数组数值计算方式 1.如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。 import numpy as ...

    numpy 不同形状(shape)的数组数值计算方式

    1.如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。 
    
    	    import numpy as np
    	    a = np.array([1, 2, 3, 4])
    	    b = np.array([5, 6, 7, 8])
    	    c = a * b
    	    print(c)   # [1*5,2*6,3*7,4*8]
    	    # 结果 [ 5 12 21 32]
    
    2.当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如: 
    
    	    import numpy as np 
    	     
    	    a = np.array([[ 0, 0, 0],
    	               [10,10,10],
    	               [20,20,20],
    	               [30,30,30]])
    	    b = np.array([1,2,3])
    	    print(a + b)
    	    
    	    # 结果:(原理往下看)
    	    	'''[[ 1  2  3]
    	     		[11 12 13]
    	    		[21 22 23]
    	     		[31 32 33]]'''
    
    4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算:
    

    下面的图片展示了数组 b 如何通过广播来与数组 a 兼容。
    在这里插入图片描述
    具体下边可表示
    import numpy as np
    a = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]])
    b = np.array([1,2,3])
    bb = np.tile(b, (4, 1))
    print(a + bb)

    		    # 结果:
    		    """[[ 1  2  3]
    		     	[11 12 13]
    		     	[21 22 23]
    		     	[31 32 33]]"""
    

    3.numpy.tile(A,代表)
    通过重复A代表给出的次数来构造数组
    tile怎么执行的,有两个要点
    (1)比较数组维度d和元组维度reps,如果d<reps,在需要时对数组补中括号 [] 来增加维度。 (2)元组数字从右到左,数组维度从最深维度到最低维度。假设元组为(a,b,c,d,e,f),则数组最深维度重复f次;然后次深维度重复e次;接着次次深维度重复d次;再然后次次次深维度重复c次…… 以此类推,直到对最低维度重复a次,结束,得到结果

    		    import numpy as np
    		    a = np.array([0, 1, 2])
    		    b = np.tile(a,2)
    		    print(b)
    		    print('***********************')
    		    c = np.tile(a, (2, 1))     
    		    print (c)
    		    print('***********************')
    		    d = np.tile(a, (2, 2, 1))      # 具体计算过程见下
    		    print(d)
    		    print('***********************')
    		    e = np.array([[1, 2], [3, 4]])
    		    f = np.tile(e, 2)        
    		    print(f)
    		    print('***********************')
    		    g = np.tile(e, (2, 1))    
    		    print(g)
    		    print('***********************')
    		    h = np.array([1,2,3,4])
    		    i = np.tile(h,(4,1))      
    		    print(i)
    		    
    		    # 结果
    		      b =   [0 1 2 0 1 2]
    		        ***********************
    		      c =  [[0 1 2 0 1 2]
    		         	[0 1 2 0 1 2]]
    		        ***********************
    		       d =  [[[0 1 2]
    		      		[0 1 2]]
    		    	 	[[0 1 2]
    		      		[0 1 2]]]
    		        ***********************
    		       f = [[1 2 1 2]
    		           [3 4 3 4]]
    		        ***********************
    		      	g = [[1 2]
    		             [3 4]
    		             [1 2]
    		             [3 4]]
    		        ***********************
    		        i = [[1 2 3 4]
    		             [1 2 3 4]
    		             [1 2 3 4]
    		             [1 2 3 4]]			        
    

    d 过程见下
    在这里插入图片描述

    展开全文
  • 用 opencv 实现一幅图片上物体形状的识别 例如一幅图片有圆形 三角形 五角星等形状 怎么识别出来并获取他们各自的数量啊。基本思路是什么
  • 代码用于产生任意形状的封闭图形并将封闭区域内进行赋值
  • 利用不同种类的物体全局形状或局部形状可能相似的现象,首先提取测试图像的局部形状;再找出样本库中与其局部形状相匹配的局部形状集;根据测试图片与样本图片中局部形状的相对位置及大小,进行全局形状映射;最后...
  • 代码可直接运行,资源额外提供两种字体,25种词云图形状素材
  • 文章目录概述绘制图片绘制形状绘制文字 概述 QT使用QPainter进行二维图形绘制,QPainter可以绘制各种图形,例如点、线、矩形、圆、椭圆等,QPainter也支持线性变换,例如平移、旋转缩放等,此外,QPainter也支持...
  • Bootstrap 样式之 图片的显示形状

    千次阅读 2018-03-07 15:50:33
    在Bootstrap中,除了响应式图片的处理,还预定义了三种不同图片显示样式(测试版本3.x)我们先随便找一张图片,我这里给出一张160*160 的正方形图片:我们开始添加三种不同图片样式:&lt;img src="self...
  • 需要被裁剪成某个形状 ( 图 2 ) 最终效果( 图 3 ) 首先先引入资源文件 在values下创建名称为attrs的文件 配置attrs中的资源属性(因为我都加入注释了 所以看注释就应该懂了 我就不再这里多说了) 那个format 就是类型...
  • 在同一个canvas中绘制多个不同形状,颜色的图形时,后面的总是将前面的颜色覆盖 解决方法: beginPath() 和 closePath() 这两个函数可以起到类似 <div> 的作用,用它来把每个图形包围,就可以绘制不同颜色的...
  • Tableau自定义形状

    千次阅读 2019-08-23 04:41:01
    找到想要的形状,以图片(.jpg)的形式保存到“我的Tableau存储库”中。 在“形状”文件夹中有Tableau自带的形状。 添加一个新的文件来存放自定义形状。 在Tableau工作簿中,打开形状标记卡查看自定义形状。 .....
  • 【Python】txt文本文件生成词云图片纯方框,无文字单字过滤任意形状词云完整代码 纯方框,无文字 查询知wordcloud默认是不支持显示中文的,中文会被显示成方框。 需要借助wordlcloud.WordCloud初始化函数的参数font_...
  • 1.图片底部圆弧 直接看代码;里面有注释: &lt;!DOCTYPE HTML&gt; &lt;html lang="en-US"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;...
  • 检测图片中的简单几何图形,如三角形、圆形、矩形等
  • OpenCV 两张大小不同图片的叠加

    千次阅读 2017-02-22 23:33:46
    使用openCV这个工具进行图片处理还是很简单的,这里总结一下两张大小不同图片的和成。 openCV合唱两张类型,大小相同的图片是很简单的只需使用addWeighted函数就行了。 函数的参数是addWeighted ( 第一张鱼片,第...
  • Python+Opencv实现多种形状的检测

    千次阅读 2019-12-26 13:49:43
    二、Hough变换原理简介三、Hough变换实现步骤四、Hough变换直线检测代码实现及效果展示五、Hough变换圆形检测代码实现及效果展示六、基于Hough的椭圆检测代码实现及效果展示七、轮廓检测不同形状代码实现及效果展示...
  • 颜色字符串有'c', 'm', 'y', 'r', 'g', 'b', 'w',和'k'。分别表示青,红紫,黄,红,绿,白和黑。 线型字符串有:'-' 为实线, '--' 为虚线, ':' 为点线, '-.' 为点虚线, 及'none' 表示不用线型。...
  • 利用不同种类的物体全局形状或局部形状可能相似的现象,首先提取测试图像的局部形状;再找出样本库中与其局部形状相匹配的局部形状集;根据测试图片与样本图片中局部形状的相对位置及大小,进行全局形状映射;最后...
  • 读取图片格式有多个代码库,比如opencv-PIL-matplotlib-Skimage-Pytorch。 PIL读取图片函数是open,其他基本是imread方法。 PIL读取图片的格式是image...但还有一个不同点,matplotlib读取的数据会有一些问题,比如...
  • 不同方式读入图片与HWC与RGB

    千次阅读 2022-04-10 16:59:27
    OpenCV numpy.ndarray BGR HWC matplotlib.pyplot读取图片 ...形状 # for torch.Tensor print(tensor_img.shape()) # # torch.Size([3, 512, 768]) # for numpy.array print(numpy_img.shape()) # # (512, 768, 3
  • OpenCV识别形状

    千次阅读 2019-03-27 20:29:16
    其中遇到的问题主要是识别轮廓时矩形内部的形状导致轮廓不闭合。 1. 对输入灰度图片进行高斯滤波 2. 做灰度直方图,提取阈值,做二值化处理 3. 提取图片轮廓 4. 识别图片中的矩形 5. 提取图片中的矩形 常用函数 ...
  • PPT学习整理(三)合并形状

    千次阅读 2021-09-22 20:52:05
    spm_id_from=pageDriver ...选择单个的时候,组合形状按钮是灰色的,只有选择多个时,组合形状按钮才启用。 选择【联合】显示并集 选择【组合】抹去重叠部分,显示差异。 选择【拆分】每一部分都...
  • 程序默认打开时会播放内置的一个Gif动态图片,窗口形状根据图片动态调整。 你可以打开其他图片以改变窗口的异形形状。 程序界面是一个三无窗口:无任务栏、无标题栏、无边框。 为方便控制,程序具有托盘图标,且托盘...
  • ![图片说明](https://img-ask.csdn.net/upload/201610/20/1476977003_861466.jpg)**就像这样的图片 识别出 矩形、圆形、三角形、各种颜色 有多少个。**
  • MATLAB图像处理(一)——计算机图形学之图像形状识别 由于遇到了很多次这个课题,这次做完之后结合手上的资料总结一下。 基本步骤: ...针对图像中可能有不同形状的目标物体,为了进行目标筛选,可以先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,566
精华内容 33,426
关键字:

不同形状图片