栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【OpenCV入门学习--python】copyMakeBorder()来设置边框(额外的填充图像)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【OpenCV入门学习--python】copyMakeBorder()来设置边框(额外的填充图像)

例子源于OpenCV官网手册(https://docs.opencv.org/4.x/dc/da3/tutorial_copyMakeBorder.html)
使用OpenCV函数copyMakeBorder()来设置边框(额外的填充图像)。

运行结果:



**

源代码:

**

"""
@file copy_make_border.py
@brief Sample code that shows the functionality of copyMakeBorder
"""
import sys
from random import randint
import cv2 as cv
def main(argv):
    #首先,我们声明将要使用的变量:
    borderType = cv.BORDER_CONSTANT
    window_name = "copyMakeBorder Demo"
    #特别需要注意的是变量rng,它是一个随机数生成器。我们用它来生成随机的边框颜色,我们很快就会看到。
    
    #加载一个图像
    #像往常一样,我们加载源图像src:
    imageName = argv[0] if len(argv) > 0 else 'lena.jpg'
    # Loads an image
    src = cv.imread(cv.samples.findFile(imageName), cv.IMREAD_COLOR)
    # Check if image is loaded fine
    if src is None:
        print ('Error opening image!')
        print ('Usage: copy_make_border.py [image_name -- default lena.jpg] n')
        return -1
    
    print ('n'
           't   copyMakeBorder Demo: n'
           '     -------------------- n'
           ' ** Press 'c' to set the border to a random constant value n'
           ' ** Press 'r' to set the border to be replicated n'
           ' ** Press 'ESC' to exit the program ')#简单介绍了如何使用该程序
    
    #创建一个窗口:
    cv.namedWindow(window_name, cv.WINDOW_AUTOSIZE)
    #初始化参数
    #现在,我们初始化定义边框大小(上、下、左、右)的参数。我们给他们一个src大小的5%的值。
    top = int(0.05 * src.shape[0])  # shape[0] = rows
    bottom = top
    left = int(0.05 * src.shape[1])  # shape[1] = cols
    right = left
    
    while 1:
        
        
       #随机的颜色。在每次迭代中(0.5秒后),随机边界颜色(值)被更新…
        value = [randint(0, 255), randint(0, 255), randint(0, 255)]#这个值是在[0,255]范围内随机选取的三个数字的集合。
        
        
        #在图像周围形成一个边框
        #最后,我们调用copyMakeBorder()函数来应用相应的填充:
        dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value)
        
        cv.imshow(window_name, dst)#显示结果
        
        
        
        #循环
        #当ESC键未按下时,程序运行在一个无限循环中。如果用户按下'c'或'r',则borderType变量分别取BORDER_CONSTANT或BORDER_REPLICATE的值:
        c = cv.waitKey(500)
        if c == 27:
            break#如果你按“ESC”,程序将退出。
        elif c == 99: # 99 = ord('c')
            borderType = cv.BORDER_CONSTANT#如果按“c”,则会再次出现随机颜色的边框
        elif c == 114: # 114 = ord('r')
            borderType = cv.BORDER_REPLICATE#如果你按下'r',边界将变成边缘像素的副本。
            
        
    return 0
if __name__ == "__main__":
    main(sys.argv[1:])
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号