精华内容
下载资源
问答
  • 用halcon实现轮廓模板匹配,实战批量图片,可运行已调试,可作为学习参考
  • 直接对白底的目标物进行外轮廓提取 单张图片处理代码如下: import cv2 as cv img = cv.imread('./0.jpg') #读取的图片 cv.imshow('original',img) #显示原图 img2 = cv.cvtColor(img,cv.COLOR_BGR2GRAY) #对...

    直接上图

    直接对白底的目标物进行外轮廓提取

    单张图片处理代码如下:

    import cv2 as cv
    
    img = cv.imread('./0.jpg')   #读取的图片
    cv.imshow('original',img)    #显示原图
    img2 = cv.cvtColor(img,cv.COLOR_BGR2GRAY)  #对图片进行灰度化处理
    cv.imshow('gray',img2)    #显示灰度化的图片
    ret,binary = cv.threshold(img2,250,255,cv2.THRESH_BINARY) #图片二值化 255是白色,因为我这个背景是白色,只需要除背景的轮廓提取,所以阈值范围设置高点,这里设置大于250才变为1白色。
    cv.imshow('binary',binary)      #显示二值化后的图片
    ret,binary2 = cv.threshold(img2,0,255,cv2.THRESH_BINARY) #生成一张背景纯白色的图片
    cv.imshow('binary2',binary2)    #显示纯白图片
    _,change = cv.threshold(binary,127,255,cv2.THRESH_BINARY_INV)     #二值化后反色处理,白变黑,黑变白
    cv.imshow('change',change)  #显示反色后的图片
    contours, heriachy = cv.findContours(change, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) #提取轮廓
    cv.drawContours(img,contours,0,(0,0,0),2)  #在原图上绘制图片 (0,0,0)设置轮廓线为黑色,像素宽度为2
    cv.imshow('final',img)  #在原图显示轮廓
    cv.drawContours(binary2,contours,0,(0,0,0),2)  #在白图上绘制图片 (0,0,0)设置轮廓线为黑色,像素宽度为2
    cv.imshow('final2',binary2)      #在白图上显示轮廓
    
    cv.waitKey(0)

    如果代码运行出现这个错误

    cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\……的话

    可能是你没下载好cv2,可以尝试pip install opencv-python 来下载,速度慢的话可以跟镜像源

    -i https://mirrors.aliyun.com/pypi/simple/

    或是你的路径存在中文,需要把文件夹名词,或路径中带中文的名词修改掉。

    然后是批量的处理代码

    import os
    import cv2 as cv
    from PIL import Image
    import numpy as np
    #批量图片处理
    
    dir = './1/'                           #读取图片的文件夹路径
    files = os.listdir(dir)                #获取所有图片
    files.sort()
    for each_bmp in files:  # 遍历,进行批量转换
        first_name, second_name = os.path.splitext(each_bmp)   #获取图片名称,前缀名和后缀名
        each_bmp = os.path.join(dir, each_bmp)             #得到每张图片的完整路径
        image = Image.open(each_bmp)         #通过PIL读取每张图片
        img = cv.cvtColor(np.asarray(image), cv.COLOR_RGB2BGR)  #将图片通道转换,因为PIL和opencv的通道格式不一样
        img2 = cv.cvtColor(img,cv.COLOR_BGR2GRAY)  #对图片进行灰度化处理
        ret, binary = cv.threshold(img2, 250, 255,cv.THRESH_BINARY)  # 图片二值化 255是白色,因为我这个背景是白色,只需要除背景的轮廓提取,所以阈值范围设置高点,这里设置大于250才变为1白色。
        ret,binary2 = cv.threshold(img2,-1,255,cv.THRESH_BINARY) #生成一张背景纯白色的图片
        _, change = cv.threshold(binary, 127, 255, cv.THRESH_BINARY_INV)  # 二值化后反色处理,白变黑,黑变白
        contours, heriachy = cv.findContours(change, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)  # 提取轮廓
        cv.drawContours(img,contours,-1,(0,0,0),2)  #在原图上绘制图片 (0,0,0)设置轮廓线为黑色,像素宽度为2
        cv.imwrite('./2/'+str(first_name)+'.jpg',img)    #在2文件夹下生成原图+轮廓
        cv.drawContours(binary2, contours, -1, (0, 0, 0), 2)  # 在白图上绘制图片 (0,0,0)设置轮廓线为黑色,像素宽度为2
        cv.imwrite('./3/' + str(first_name) + '.jpg', binary2)   #在3文件夹下生成白图+轮廓

    展开全文
  • Pyhton Opencv:批量识别图片外层轮廓并截图保存一、背景二、源代码三、执行结果 一、背景   有2个文件夹,其中文件夹a存在多张如上图片,文件夹b为空。现希望读取文件夹a中所有图片,识别黑色矩形并截图保存至...

    Pyhton OpenCV:批量识别图片外层轮廓并截图保存


    一、背景

    图1
    图2
      有2个文件夹,其中文件夹a存在多张如上图片,文件夹b为空。现希望读取文件夹a中所有图片,识别黑色矩形并截图保存至文件夹b中(即去掉黑色矩形之外的白色区域)。

    二、源代码

    # 系统:window7
    # 编程工具:PyCharm
    # 编程语言:python
    # 前置条件:已安装好opencv相关环境
    
    # coding:utf-8
    import os
    import cv2
    
    
    # 读取文件夹内的所有文件的路径
    def read_file_name(file_dir):
        list_path =[]  # 文件路径
        list_name = []  # 文件名
        for root, dirs, files in os.walk(file_dir):
            """
            print(root)  # 当前目录路径
            print(dirs)  # 当前路径下所有文件夹
            print(files)  # 当前路径下所有文件
           """
            path = root
            if len(dirs) == 0:  # 该目录下不存在文件夹
                for file in files:
                    path1 = path + '//' + file
                    # print(path1)
                    list_path.append(path1)
                    list_name.append(file)
            else:  # 该目录下存在文件夹
                for dir1 in dirs:
                    path = path + '//' + dir1
                    for file in files:
                        path1 = path + '//' + file
                        # print(path1)
                        list_path.append(path1)
                        list_name.append(file)
        return list_path, list_name
    
    
    # 主函数
    if __name__ == '__main__':
        # 读取所有图片的路径
        path_original = "C://Users//Administrator//Desktop//a"  # 原文件夹
        path_target = "C://Users//Administrator//Desktop//b"  # 目标文件夹
        file_path, file_name = read_file_name(path_original)
        i = 0
        for path in file_path:
            # 读取图片
            img_origin = cv2.imread(path)
            # 灰度化
            img_gray = cv2.cvtColor(img_origin, cv2.COLOR_BGR2GRAY)
            # 二值化
            ret, thresh = cv2.threshold(img_gray, 200, 255, cv2.THRESH_BINARY_INV)  # 识别黑色轮廓
            # 查找轮廓
            contours = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
            # 画出最外层轮廓
            x, y, w, h = cv2.boundingRect(contours[0])
            # img_display = img_origin  # 浅拷贝,修改img_display时,同样也修改img_origin
            img_display = img_origin.copy()  # 深拷贝,修改img_display时不会改变img_origin
            cv2.rectangle(img_display, (x, y), (x + w, y + h), (0, 255, 0), 2)
            # 显示图片
            # cv2.imshow("image", img_display)
            # cv2.waitKey(1000)
            # 保存截图
            path_save = path_target + "//" + file_name[i]
            cv2.imwrite(path_save, img_origin[y:y+h, x:x+w])
            i = i + 1
        print("执行结束。")
    
    
    

    三、执行结果

    在这里插入图片描述
    截图后的图片如下所示。

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 问题:白色等背景(幕布)下的批量图像,自动分割出前景物体,无须交互环境: ubuntu 16.04 + opencv3 + openmp + cmake**注意:具体分割效果可以自己调整腐蚀膨胀和grabcut中的阈值大小来优化。 本文章主要是用...

    问题:白色等背景(幕布)下的批量图像,自动分割出前景物体,无须交互

    环境: ubuntu 16.04 + opencv3 + openmp + cmake

    **注意:具体分割效果可以自己调整腐蚀膨胀和grabcut中的阈值大小来优化。
    本文章主要是用处理后的结果来重建物体,所以难以避免的是会保留一部分背景,以保证重建效果**

    1.使用阈值分割,提取目标物体大概位置

    //阈值分割,提取前景的大致轮廓
        threshold(gray,mask,0,255,THRESH_BINARY|CV_THRESH_OTSU);

    2.通过膨胀腐蚀操作,构造出容纳物体的mask

        //膨胀,去掉噪点
        dilate(mask,mask, element1);
        if(debug) imshow("膨胀",mask);
        //腐蚀,得到整块的小车位置
        erode(mask, mask, element0);
        if(debug) imshow("腐蚀",mask);

    3。构造出frabcut需要的mask图像,标记前后背景像素

        //构造grabcut的mask
        for(int i=0;i<mask.rows;i++)
        {
            for(int j=0;j<mask.cols;j++)
            {
                if(mask.at<uchar>(i,j)>100)
                    mask.at<uchar>(i,j)=cv::GC_PR_BGD;//标记为可能的背景
                else
                    mask.at<uchar>(i,j)=cv::GC_PR_FGD;//标记为可能的前景
    
            }
        }

    4 调用opencv中的grabcut函数进行分割操作

     Mat bgModel,fgModel;
        grabCut(img,mask,Rect(0,0,img.cols,img.rows),bgModel,fgModel,1, cv::GC_INIT_WITH_MASK);

    5.使用openmp多线程库,加速计算

    #pragma omp parallel for
     for(int i=0;i<fileName.size();i++)
        {
            string filePath=basePath+fileName.at(i);
            cout<<filePath<<endl;
            Mat img=imread(filePath);
            if(img.empty())
            {
                cerr<<"读不到该图像!"<<endl;
                continue;
            }
    
            resize(img,img,Size(img.cols/3,img.rows/3));
            //imwrite(outputPath+fileName.at(i),img);
    
            //提取白布里面的部分
            img=getWhitePart(img);
    
    
            //imshow("original",img);
    
            Mat result=grabCutImage(img);
            //imshow("result", result);
            imwrite(outputPath+fileName.at(i),result);
            //waitKey(0);
        }

    6.自动读取给定目录下的图片,输出到指定目录

    vector<string> getFiles(string cate_dir)
    {
        vector<string> files;//存放文件名
    
    #ifdef WIN32
        _finddata_t file;
        long lf;
        //输入文件夹路径
        if ((lf=_findfirst(cate_dir.c_str(), &file)) == -1) {
            cout<<cate_dir<<" not found!!!"<<endl;
        } else {
            while(_findnext(lf, &file) == 0) {
                //输出文件名
                //cout<<file.name<<endl;
                if (strcmp(file.name, ".") == 0 || strcmp(file.name, "..") == 0)
                    continue;
                files.push_back(file.name);
            }
        }
        _findclose(lf);
    #endif
    
    #ifdef linux
        DIR *dir;
        struct dirent *ptr;
        char base[1000];
    
        if ((dir=opendir(cate_dir.c_str())) == NULL)
            {
            perror("Open dir error...");
                    exit(1);
            }
    
        while ((ptr=readdir(dir)) != NULL)
        {
            if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0|| ptr->d_name[0]=='.')    ///current dir OR parrent dir
                    continue;
            else if(ptr->d_type == 8)    ///file
                //printf("d_name:%s/%s\n",basePath,ptr->d_name);
                files.push_back(ptr->d_name);
            else if(ptr->d_type == 10)    ///link file
                //printf("d_name:%s/%s\n",basePath,ptr->d_name);
                continue;
            else if(ptr->d_type == 4)    ///dir
            {
                files.push_back(ptr->d_name);
                /*
                    memset(base,'\0',sizeof(base));
                    strcpy(base,basePath);
                    strcat(base,"/");
                    strcat(base,ptr->d_nSame);
                    readFileList(base);
                */
            }
        }
        closedir(dir);
    #endif
    
        //排序,按从小到大排序
        sort(files.begin(), files.end());
        return files;
    }

    源图:

    结果图:

    源码下载地址:download.csdn.net/download/u014679795/10141966

    展开全文
  • 图像批量旋转裁切

    2020-09-10 18:50:23
    将经过批量抠图处理过的图片中所有目标逐一裁切保存。如下图: 原图 抠图处理图像 裁切结果 通过分析抠图后图片RGBA四个通道信息知道,相比于原图,图片的RGB通道值没有变化(即使变化了也没有影响)...

    任务描述

    将经过批量抠图处理过的图片中所有目标逐一裁切保存。如下图:

    原图
    原图
    抠图处理图像
    裁切结果




    通过分析抠图后图片RGBA四个通道信息知道,相比于原图,图片的RGB通道值没有变化(即使变化了也没有影响),区别只在于alpha通道值。

    透明部分的alpha=0,物体部分alpha=255,边缘部分alpha位于0-255之间。可以将alpha通道单独拿出来,当作gray图像处理。步骤包含:

    • 去噪 medianBlur
    • 获取边缘 findContours
    • 计算各个目标的最小包围盒
    • 原图放大(防止旋转后目标丢失)将目标框旋转正(裁切只能裁水平的矩形)
    • 裁切

    Notes

    • 要读入包含透明通道的png图片,应该加入cv2.IMREAD_UNCHANGED标识。imread默认读入只包含BGR三个通道。如img = cv2.imread(src_file, cv2.IMREAD_UNCHANGED)
    • 读/写图片的路径包含中文字段,不能用imread和imwrite。应该用imdecode和imencode.
    • 图片根据面积和长宽比进行过滤。(这里需要根据自己数据情况进行设置)
    • 原图路径可以包含子目录,但是生成路径中暂时不能自动生成对应子目录。
    • 处理完的数据可能会包含一些不想要的裁切信息,自己再筛一遍,或者通过更改更大的阈值避免。

    Code

    主函数及参数处理

    def parseargs():
        parser = argparse.ArgumentParser(description="crop objects.", add_help=True, allow_abbrev=True)
        parser.add_argument('-i', '--input',
                            help='picture directories input path.',
                            default='input',
                            # type=str,
                            )
        parser.add_argument("-o", '--output',
                            help='save resized pictures file path',
                            # type=str,
                            default='output',
                            )
        args = parser.parse_args()
        return args
    
    
    def main():
        args = parseargs()
        source_path = args.input
        save_path = args.output
        if save_path[-1] == "/":
            save_path = save_path[:-1]
        dst_path = save_path + '/'
        ff = os.walk(source_path, followlinks=True)
        ext = ['.png', '.PNG']
        for root, dirs, files in ff:
            # if ':' in root:
            #     dst_path = save_path + "/"
            # else:
            #     dst_path = save_path + "/" + root + "/"
            # create save_path
            if not os.path.exists(dst_path):
                os.makedirs(dst_path)
            for file in files:
                if file.endswith(tuple(ext)):
                    src_file = os.path.join(root, file)
                    img = cv2.imdecode(np.fromfile(src_file, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
                    # img = cv2.imread(src_file, cv2.IMREAD_UNCHANGED) # 不能包含中文路径
                    getcontours(img, file, dst_path)
    

    轮廓提取

    def getcontours(img, filename, dst_path):
        (filename, extension) = os.path.splitext(filename)
        b_channel, g_channel, r_channel, a_channel = cv2.split(img)
        blurred = cv2.medianBlur(a_channel, 3)  # 中值滤波
        # edged = cv2.Canny(blurred, 30, 150)
        contours, hieratchy = cv2.findContours(blurred, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
        index = 0
        for contour in contours:
            # 计算一个简单的边界框
            # x, y, w, h = cv2.boundingRect(contour)
            # cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 3)
            # 计算包围目标的最小矩形区域
            ares = cv2.contourArea(contour)  # 计算包围形状的面积
            if ares < 800:  # 过滤面积小于800的形状
                continue
            rect = cv2.minAreaRect(contour) # rect[0]旋转中心,rect[2]旋转角度,rect[1]图片宽高
            if ((rect[1][0]/rect[1][1]) > 5) or ((rect[1][1]/rect[1][0]) > 5):  # 过滤宽高比大于5的图像
                continue
    
            box_origin = cv2.boxPoints(rect)
            box_origin = np.int0(box_origin)
            cv2.drawContours(img, [box_origin], -1, (255, 0, 255), 3)
            M = cv2.getRotationMatrix2D(rect[0], rect[2], 1)
            dst = cv2.warpAffine(img, M, (2 * img.shape[0], 2 * img.shape[1])) # 扩大两倍,防止旋转出目标
            box = rotatecordiate(rect[2], box_origin, rect[0][0], rect[0][1]) # 旋转
            cropfilename = dst_path + filename + "-crop-" + str(index) + ".png"
            imagecrop(dst, np.int0(box), cropfilename) # 裁切
            index += 1
    
        print("file {} contains {} objects".format(filename, index))
    

    图像旋转

    # 逆时针旋转
    def Nrotate(angle, valuex, valuey, pointx, pointy):
        angle = (angle / 180) * np.math.pi
        valuex = np.array(valuex)
        valuey = np.array(valuey)
        nRotatex = (valuex - pointx) * np.math.cos(angle) - (valuey - pointy) * np.math.sin(angle) + pointx
        nRotatey = (valuex - pointx) * np.math.sin(angle) + (valuey - pointy) * np.math.cos(angle) + pointy
        return (nRotatex, nRotatey)
    
    
    # 顺时针旋转
    def Srotate(angle, valuex, valuey, pointx, pointy):
        angle = (angle / 180) * np.math.pi
        valuex = np.array(valuex)
        valuey = np.array(valuey)
        sRotatex = (valuex - pointx) * np.math.cos(angle) + (valuey - pointy) * np.math.sin(angle) + pointx
        sRotatey = (valuey - pointy) * np.math.cos(angle) - (valuex - pointx) * np.math.sin(angle) + pointy
        return (sRotatex, sRotatey)
    
    
    # 将四个点做映射
    def rotatecordiate(angle, rectboxs, pointx, pointy):
        output = []
        for rectbox in rectboxs:
            if angle > 0:
                output.append(Srotate(angle, rectbox[0], rectbox[1], pointx, pointy))
            else:
                output.append(Nrotate(-angle, rectbox[0], rectbox[1], pointx, pointy))
        return output
    

    图像裁切

    # 图片裁切
    def imagecrop(image, box, cropfile):
        xs = [x[1] for x in box]
        ys = [x[0] for x in box]
        # print(xs)
        # print(min(xs), max(xs), min(ys), max(ys))
        cropimage = image[min(xs):max(xs), min(ys):max(ys)]
        # print(cropimage.shape)
        if (cropimage.shape[0] > 0) & (cropimage.shape[1] > 0):
            # cv2.imwrite(cropfile, cropimage)
            cv2.imencode('.png', cropimage)[1].tofile(cropfile)
        return cropimage
    

    Usage

    $ python minbbox.py -i input -o output
    
    file 2020-06-17 105023.jpg-no-bg contains 12 objects
    
    展开全文
  • 有的时候要批量操作图像,保存数据或者图像结果。可以利用函数嵌套进行。这个代码我是从老师代码里看到的,我将其运用于去伪轮廓项目里,保存K-means聚类结果可行,但是保存拟合圆图像时出错(拟合圆不正常),错误...
  • 1、批量读取图片批量读取文件 2、适配文件与excel、txt等文档信息 3、获取显示图片ROI、Point、rect、更改像素值 clear; clc; close all; %% crop the im into 256*256 num = 0; %% num=1 内缩3个像素 num =2...
  • C++批量读入图片

    2020-08-31 10:23:51
    #include <iostream> #include<opencv2/highgui.hpp> #include<... string path = "E:\\daoju\\骨料图片\\1\\"; int len = path.length(); std::vector<cv::String> filena...
  • Pillow处理图片及实战应用1 pillow安装1 图片读取、保存和格式转换2 图片剪切、粘贴和几何变换 1 pillow安装 打开命令行,输入pip install pillow,等待安装完成(我已经安装过了),目前最新版的是8.0.1(如果不是...
  • 应用场景:分割图像 main.cpp #include<iostream> #include<opencv2/opencv.hpp> #include"levelset.h" //打开xml文件需要加载的头文件 #include "../tinyxml/tinyxml.h" #include "../tinyxml/tinystr...
  • 怎么用CDR来批量导出图片

    千次阅读 2020-10-26 10:58:19
    页面编辑完成的下一步,就是要将编辑完成的文件进行批量导出,如果cdr文件比较大的话,将编辑完成的cdr文件交付给同事或者第三方来输出打印时,文件加载需要一定的时间,也就是我们常说的卡。 而CDR文件的导出方法...
  • 图像分割(一)轮廓提取

    千次阅读 2017-12-24 12:59:03
  •  cv2.drawContours(img, [box], -1, (0, 255, 0), 2)#原始图像轮廓(列表),轮廓索引(绘制独立轮廓时有用,  #-1绘制所有轮廓) ,轮廓颜色,轮廓厚度,因为这里我们是循环画的图,所以画的是所有的轮廓 ...
  • 因为最近在弄生成词云,作为背景的图片如果轮廓清晰效果就会更好,但是我用Photoshop用的又不是很熟练,所以就写了一个这样的代码来实现简单的批量抠图。 效果 我们先来看看抠图的效果: 工具 实现批量抠图,...
  • mybatis批量更新及其效率问题 一:背景 注意: ...公司旧数据的清洗,比如图片路径的改变,日期格式的改变(日期格式是varchar),因为数据大体上有一定的规律可寻,所以我的解决思路是用mybatis操
  • 1、安装图像处理库 运行——cmd——输入Pip3 install pillow 2、图像缩放 from PIL import Image img = Image.open("c:\\tmp2\\jpgs\\car1.jpg") x,y = img.size #获取图像的宽和高(像素) newImg = img.resize((x//...
  • Python—docx 批量生成 docx 文件

    千次阅读 2019-07-20 11:46:28
    一、文档结构 二、方法 from docx import Document from docx.shared import Pt # 字体磅数 from docx.oxml.ns import qn # ...from docx.shared import Inches # 图片尺寸 from docx.enum.text import WD_PARA...
  • 批量检测指令 ./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights 将检测的图片路径全部存放在一个txt文件中,输入检测txt文件路径 看到如下结果: 然后可在data/out文件夹...
  • 获取在线轮廓

    2019-10-04 03:08:27
    3 可以批量导入json,转化为shp,注意名字是乱码需要重新关联,参考链接1的说明 https://mapshaper.org/ 4 osm-导出边界 https://wambachers-osm.website/boundaries/ 转载于:...
  • ·保持在目标目录的目录结构,或组合成一个目录所有图片批量水印 ·跳过或覆盖现有水印的图像/照片中的目标目录 ·自动检查TSR的水印图像软件的新版本 软件界面中有语言选项,但是选择中文时,界面仍是...
  • javaweb项目大概轮廓

    2020-09-01 19:57:27
    javaweb项目大概轮廓 一、项目搭建 1、ssm 配置文件Ioc容器版本 完整参考:F:\NewDay\newtimeProject\SSMCinema 懒部署: F:\NewDay\SSM 复制:src+pom.xml 修改pom.xml 文件中的坐标对应包名和项目名 <groupId&...
  • 图像做降噪滤波处理 提取边缘 检测轮廓 检测轮廓最小外接矩形(旋转矩形) 对图像先平移再旋转 最后裁剪 代码如下: import cv2 import numpy as np image = cv2.imread("rice.jpg") gray = cv2.cvtColor...
  • 为了适用于医学图像批量处理,首先给出一种基于区域的映射方法预提取初始区域作为曲线演化的初始条件。为了减少伪边界的影响,并使轮廓线充分收敛至凹陷区域,提出了一种基于曲线自适应的改进G-S模型对病灶进行...
  • 并且通过同样的方法对同一张图像中的多个矩形进行边缘缺陷的检测。 示例代码如下: * 读取图像 dev_update_off () read_image (Image, 'punched_holes') get_image_size (Image, Width, Height) dev_close_window...
  • title: 【python】基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析 type: categories copyright: true categories: 可视化 tags: - Python - 数据可视化 abbrlink: 38231785 date: 2020...
  • 这些轮廓是一些图像处理的结果,代表诸如对象的边界。下图(a)显示了覆盖在原图上的这样的边缘;图(b)将图(a)中标记的地方缩放到矩形区块,并用交叉线强调出所谓的轮廓控制点。因此,你可以更加清楚的看到控制点的...
  • 比如我现在有个文件夹,需要对里面的所有图片使用PS,进行轮廓提取,那么需要怎么做,才能节省时间,效率高呢。 首先直接在ps打开一张图片, 然后使用快捷键alt+F9,跳出命令设置 这里我们设置Shift+F12...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,770
精华内容 1,108
关键字:

批量图片轮廓