精华内容
下载资源
问答
  • python cv2截截取取不不规规则则区区域域图图片片实实例例 今天小编就为大家分享一篇python cv2截取不规则区域图片实例具有很好的参考价值希望对大家有所帮助 一起跟随小编过来看看吧 知知识掌掌握握 cv2.threshold)...
  • python cv2截取不规则区域图片

    千次阅读 2019-11-09 10:52:57
    知识掌握 cv2.threshold()函数: 设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者...src:表示的是图片源 thresh:表示的是阈值(起始值) maxval:表示的是...

    知识掌握

    cv2.threshold()函数:
    设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点。

    Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst

    在其中:
    src:表示的是图片源
    thresh:表示的是阈值(起始值)
    maxval:表示的是最大值
    type:表示的是这里划分的时候使用的是什么类型的算法,常用值为0(cv2.THRESH_BINARY)

    import cv2  
    
    img = cv2.imread('1.jpg')
    cv2.imshow("src", img
    展开全文
  • 对于上这种不规则图片合成,尝试了两种方法: 方法1:生成一个和模板同等大小的空,将目标图片裁切、旋转后贴到空上,再进行图片的位运算合成。 方法2:利用透视变换,将目标图片裁切后,变换到指定图形...

    需求

    在这里插入图片描述

    大部分查到的图片合成,都是将矩形图片贴到模板上,或者通过权重的方式,将几张图片合成到一张图片上。对于上图这种不规则的图片合成,尝试了两种方法:

    • 方法1:生成一个和模板图同等大小的空图,将目标图片裁切、旋转后贴到空图上,再进行图片的位运算合成。
    • 方法2:利用透视变换,将目标图片裁切后,变换到指定图形,再进行贴图。

    从最终实现的结果来看,方法1只适合用于合成区域垂直于视线的场景,效果等同于方法2。方法2则适用面更广一些,可以处理一些复杂的场景。

    摘要

    技术栈如下:

    代码演示:python
    图像处理:pillow

    演示

    在进行处理前,需要先把图片中,将要贴图进去的位置扣掉,保存为png图片,用于后续的贴图。

    在这里插入图片描述
    这里将贴入空白区域的图片称为目标图片,大图称为模板图片。

    import numpy as np
    from PIL import Image
    
    def find_coeffs(source_coords, target_coords):
        """
        PIL透视变换转换
        :param source_coords: 源区域点数组,类型数组
        :param target_coords: 目标区域点数组,类型数组
        :return:
        """
        matrix = []
        for s, t in zip(source_coords, target_coords):
            matrix.append([t[0], t[1], 1, 0, 0, 0, -s[0]*t[0], -s[0]*t[1]])
            matrix.append([0, 0, 0, t[0], t[1], 1, -s[1]*t[0], -s[1]*t[1]])
        A = np.matrix(matrix, dtype=np.float)
        B = np.array(source_coords).reshape(8)
        res = np.dot(np.linalg.inv(A.T * A) * A.T, B)
        return np.array(res).reshape(8)
    
    def img_square_pil(img, position='middle'):
        # 将图像规整为正方形(pil版)  lt:top或left  rb:right或bottom
        if position not in ['middle', 'lt', 'rb']:
            raise Exception('position入参不合法')
        w, h = img.size
        if h >= w:
            # 纵向图
            t_y = ()
            if position == 'middle':
                t_y = (int((h-w)/2), int((h-w)/2 + w))
            elif position == 'lt':
                t_y = (0, w)
            elif position == 'rb':
                t_y = ((h - w), h)
    
            img = img.crop((0, t_y[0], w, t_y[1]))
        else:
            # 横向图
            t_x = ()
            if position == 'middle':
                t_x = (int((w-h)/2), int((w-h)/2 + h))
            elif position == 'lt':
                t_x = (0, h)
            elif position == 'rb':
                t_x = ((w - h), w)
            img = img.crop((t_x[0], 0, t_x[1], h))
        return img
    
    img = Image.open('目标图片')
    dec1 = Image.open(‘模板图片’)
    dec1 = dec1.convert('RGBA')
    img = img_square_pil(img)
    iw, ih = img.size
    dw, dh = dec1.size
    tgt_w, tgt_h = 560, 650    # 目标图片裁切后的宽高。空白区域为矩形,需要裁切图片。
    p1, p2, p3, p4 = (357, 395), (804, 510), (708, 1135), (138, 996)  # 空白区域四个点的坐标
    img = img.resize((int(iw / (ih / tgt_h)), tgt_h), Image.ANTIALIAS)
    iw, ih = img.size
    img = img.crop((int((iw - tgt_w) / 2), 0, int((iw - tgt_w) / 2 + tgt_w), tgt_h))
    iw, ih = img.size
    coeffs = find_coeffs(
        [(0, 0), (iw, 0), (iw, ih), (0, ih)],  # 四个点顺序和下面四个点顺序相同,比如都是顺时针
        [p1, p2, p3, p4]
    )
    img = img.transform(dec1.size, Image.PERSPECTIVE, coeffs, Image.BICUBIC)
    img.paste(dec1, (0, 0, dw, dh), mask=dec1.split()[-1])
    

    效果展示

    在这里插入图片描述

    在这里插入图片描述




    更多功能,或者想体验一下,可以扫下方二维码”:


    在这里插入图片描述
    主业前端程序猿一枚。图片处理方面,作为业余爱好。如有错误,请各位大佬轻喷,谢谢!!😂

    展开全文
  • 图片不规则的ROI区域截取下来后,将非ROI区域的像素删除. 主要函数 cvFloodFill() cvOr()(注: 与cvAnd用法雷同) 代码实现 IplImage *ipl_img = cvLoadImage("7890.jpg"); // 将ROI区域用cvLine包裹 cvLine(ipl...

    目的

    将图片内不规则的ROI区域截取下来后,将非ROI区域的像素删除.

    主要函数

    cvFloodFill()
    cvOr()(注: 与cvAnd用法雷同)

    代码实现

      IplImage *ipl_img = cvLoadImage("7890.jpg");
      // 将ROI区域用cvLine包裹
      cvLine(ipl_img, cvPoint(50, 100), cvPoint(70, 150), CV_RGB(255,255,255), 2, 8, 1);
      cvLine(ipl_img, cvPoint(70, 150), cvPoint(70, 360), CV_RGB(255,255,255), 2, 8, 1);
      cvLine(ipl_img, cvPoint(70, 360), cvPoint(50, 360), CV_RGB(255,255,255), 2, 8, 1);
      cvLine(ipl_img, cvPoint(50, 360), cvPoint(50, 100), CV_RGB(255,255,255), 2, 8, 1);
    
      // 掩码层,全黑图片
      Mat image0 = imread("7890.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
      Mat M_mask = image0.clone();
      IplImage mask_img = M_mask;
      cvZero(&mask_img);
      // 同样包裹,点一样
      cvLine(&mask_img, cvPoint(50, 100), cvPoint(70, 150), CV_RGB(0, 255, 255), 2, 8, 1);
      cvLine(&mask_img, cvPoint(70, 150), cvPoint(70, 360), CV_RGB(0, 255, 255), 2, 8, 1);
      cvLine(&mask_img, cvPoint(70, 360), cvPoint(50, 360), CV_RGB(0, 255, 255), 2, 8, 1);
      cvLine(&mask_img, cvPoint(50, 360), cvPoint(50, 100), CV_RGB(0, 255, 255), 2, 8, 1);
    
      // 不规则ROI区域标定
      cvFloodFill(
          &mask_img,
          cvPoint(60, 250), // 点在ROI区域内即可
          Scalar(255, 255, 255),
          cvScalar(20, 30, 40, 0),
          cvScalar(20, 30, 40, 0));
      cvOr(ipl_img, &mask_img, ipl_img); // 或处理
    
      // 白色区域透明化
      Mat dst = cv::cvarrToMat(ipl_img); // IplImage* -> Mat
      Mat input_bgra;
      cvtColor(dst, input_bgra, CV_BGR2BGRA);
    
      // find all while pixel and set alpha value to zero
      for (int y = 0; y < input_bgra.rows; ++y)
      {
        for (int x = 0; x < input_bgra.cols; ++x)
        {
          Vec4b &pixel = input_bgra.at<Vec4b>(y, x);
          if (pixel[0] == 255 && pixel[1] == 255 && pixel[2] == 255)
          {
            pixel[3] = 0;
          }
        }
      }
      imwrite("testPng.png", input_bgra); // 注: 一定要以PNG形式保存
    

    备注

    图片保存要以PNG格式保存,因为JPG不支持透明背景.

    展开全文
  • ps如何裁剪掉图片不规则区域

    千次阅读 2019-10-08 02:19:55
    按P,鼠标变成钢笔工具,点选住待清除区域,如下: 按ctrl+enter, 将点线变成选中区域: 按delete删除: ctrl+D取消选中区域 完成! 转载于:...



    按P,鼠标变成钢笔工具,点选住待清除区域,如下:




    按ctrl+enter, 将点线变成选中区域:



    按delete删除:


     ctrl+D取消选中区域

    完成!

    转载于:https://www.cnblogs.com/saysmy/p/5594842.html

    展开全文
  • 任意不规则形状的图片剪裁

    万次阅读 2014-07-13 12:15:19
    原理:根据选择的区域(区域的选择需要用到GraphicsPath),根据区域可以得到这部分区域的边境矩形,从而需要循环整张图片,只需要循环边境矩形,将矩形中的选择区域复制到另一种图片,这样大大提高了效率。...
  • 任意不规则形状的图片剪裁 .

    千次阅读 2015-01-08 15:40:00
    原理:根据选择的区域(区域的选择需要用到GraphicsPath),根据区域可以得到这部分区域的边境矩形,从而需要循环整张图片,只需要循环边境矩形,将矩形中的选择区域复制到另一种图片,这样大大提高了效率。...
  • 图片不规则的轮廓

    千次阅读 2016-02-29 17:53:06
    布局页面时,用到了图片上传,为了让页面统一、美观,想让上传的图片都有一个统一的外部轮廓,用到的小技巧: 用PS切出一个新的图片,让图片的大小与你想让用户上传的...则将这张图片在PS中复制一下,去黄色部分,
  • OpenCV 提取不规则ROI区域

    千次阅读 2019-12-16 12:33:10
    的三个首字母缩写,很多时候我们对图像的分析就是对图像特定ROI的分析与理解,对细胞与医疗图像来说,ROI提取正确才可以进行后续的分析、测量、计算密度等,而且这些ROI区域往往不是矩形区域,一般都是不规则的...
  • import cv2 import numpy as np def subimage(image, ...是个很强大的函数, 要明白了,找到了CSDN博文: 图像的几何变换 很详细了, 就转了! 转载于:https://www.cnblogs.com/zhangmingcheng/p/10873938.html
  • 20191115 前期回顾 01 工作区 放大镜 抓手 02选框工具 布尔运算 画布 ...alt+缩略 快速选中某一图层 前景色吸取 allt+delete 前景色填充 ctrl+d 取消选区 ctrl+shift+i 反选 shift + 圆形选框 正圆绘制 ...
  • opencv+python 抠取图片中任意形状部分

    千次阅读 2020-08-22 12:16:34
    #[300,300]为被抠取图片的尺寸,若为灰度可直接写成img.shape cv2.rectangle(mask,(mask[x1,y1],mask[x2,y2]),(255,255,255),-1) #mask[x1,y1],mask[x2,y2]为矩形的坐上和右下坐标 get_img = cv2.add(img, np....
  • Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
  •  其次,如果非要把人物从图片中抠出来,有两种方法可以,第一种如果对结果要求高,可以变通,就通过剪映的蒙版功能,剪映的蒙版功能提供了对矩形、圆形、心形和五角星等规则图形作为抠图的替代处理功能;...
  • 在windows上创建完美的不规则窗口

    千次阅读 2017-02-04 19:01:03
    在windows上创建完美的不规则窗口不规则窗口方法简介windows上的窗口绝大多数是方形的,但是偶尔也会有一些其他形状的窗口,如圆形甚至不规则形状。这些不常见的窗口是如何做出来的呢? 有两种方法可以创建不规则...
  • 移动端上(传图片太大)处理方案

    千次阅读 2018-06-07 10:50:04
    图片上传思路准备工作都做完了,那怎样用这些材料完成一件事情呢。这里要强调的是,考虑到移动端流量很贵,所以有必要对大图片进行下压缩再上传。图片压缩很简单,将图片用canvas画出来,再使用canvas.toDataUrl方法...
  • 直观原理来自: ...   它是怎么实现的? 我们需要2幅图像: 原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域 模板 (T): 将和原像比照的图像块 我们的目标...
  • /**周期管控规则参数period_rule_params,在签约周期款产品(如CYCLE_PAY_AUTH_P)时必传,在签约其他产品时无需传入。 周期款产品,会按照这里传入的参数提示用户,并对发起款的时间、金额、次数等做相应...
  • Image Embedding(图片嵌入)

    千次阅读 2019-04-18 16:17:11
    元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ...(科学上网才能看到图片图片嵌入 一 特征嵌入,将数据转换(降维)为固定大小的特征表示(矢量),...
  • Opencv numpy arry图片格式非文件流直接上传 使用opencv 做图像算法相关方面,经常会读取很多图片,然后对图像...所以提出一个需求,处理的图片不保存文件流,直接上传服务器,这样就节约时间以及性能。因为图片...
  • 问题:我想要这么复杂的区域,只是想要一个圆形区域呢? 答:经过参考 这里 的回答,给出其中回答中的代码,可以画出圆形区域的roi。 Mat image = imread(IMG_PATH); Mat dst = Mat::zeros( image . ...
  • (2-1)首先选择需要替换的颜色,然后使用魔棒-ctrl+W{针对不规则图形},或者选框工具-Ctrl+M{针对规则图形},选中图片,直接删除纯色部分,最后使用油漆桶填充颜色。 (2-2)使用Ctrl+M曲线来直接控制颜色的变化...
  • 这一周,我终于开发完成了公司的聚合代支付网关!!! 今天就给大家介绍一下微信代和支付宝的周期款那些事。 一、场景 在很多实际的商业场景中,有很多周期性款的需求,比如每个月收一次水电费,小区每个月...
  • 从上中标记色块的是有效展位,经过设计师设计确定了坐标、尺寸、编号(重要)。需要解决的是从图片中提取出色块的精确位置和尺寸,然后通过html5展示到页面上;后续修改操作(合并、拆分等)...
  • java+Tesseract-OCR实现图片识别

    万次阅读 多人点赞 2018-01-22 16:29:14
    1.今天和同事研究如何用java实现图片识别。百度上大部分都是用tesseract去实现的。所以就做了一个demo (1)。首先下载Tesseract-OCR 3.02,以及中文包chi_sim.traineddata(简体) (2)以下介绍两种方式  cmd ...
  • tesseract-ocr 实现图片识别功能

    千次阅读 2017-11-18 13:35:38
    如果遇到验证码那种不规则的字体,识别率也会大打折扣的。 当然可以参考网上的相关资料进行对Tesseract字符识别进行样本训练,通过使用训练后的语言库会提高识别精度。这里就不做演示了。参考地址: ...
  • 由于填充区域是不规则形状,将填充区域的图形出来可以采用以下两种方式:   a)使用Bitmap类型的Clone方法获取指定区域的图形,该函数的原型为: public Bitmap Clone (Rectangle rect, PixelFormat ...
  • 二、业务流程 三、心声 一、调用APP支付接口,拉起支付宝,支付并签约页面 1、业务代码如下: public AlipayTradeAppPayResponse payAndSignScene(AliPayBo bo) { try { log.info("-----------------------...
  • 深度学习

    千次阅读 多人点赞 2019-01-14 14:51:41
    我与这世间所有的羁绊,一旦连上,就再也断开。 羁绊越深,痛苦便越深。 关于这篇深度学习的文章,总共六章。 综述而已。 01:研究背景 02:深度学习网络 03:深度学习框架 04:深度学习应用 05:未来挑战和潜在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,334
精华内容 6,933
关键字:

怎么扣不规则的图