zoukankan      html  css  js  c++  java
  • OpenCV图像拼图截图添加汉字

    import base64

    # base64通过网络传递图像
    image = cv2.imencode('.jpg', frame)[1] base64_data = base64.b64encode(image) data = base64_data.decode() image_data = 'data:image/jpeg;base64,' + data
    import cv2
    import numpy as np
    from PIL import Image, ImageDraw, ImageFont

    # 合并图像,且图像通道必须是一样的
    def
    merge_image(image1, image2): h1, w1, c1 = image1.shape h2, w2, c2 = image2.shape if c1 != c2: return "两幅图通道不一样,无法合并!" else: if w1 > w2: tmp = np.zeros([h2, w1 - w2, c1]) image = np.hstack([image2, tmp]) image = np.vstack([image1, image]) elif w1 == w2: image = np.vstack([image1, image2]) else: tmp = np.zeros([h1, w2 - w1, c2]) image = np.hstack([image1, tmp]) image = np.vstack([image, image2]) return image

    # 给图像添加汉字
    def
    cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20): if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型 img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 创建一个可以在给定图像上绘图的对象 draw = ImageDraw.Draw(img) # 字体的格式 "font/STXIHEL.TTF" 是本机电脑路径为 C:WindowsFonts 中汉字的类型 fontStyle = ImageFont.truetype( "font/STXIHEI.TTF", textSize, encoding="utf-8") # 绘制文本 draw.text((left, top), text, textColor, font=fontStyle) # 转换回OpenCV格式 return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
        
    # 截取图像中的坐标位置(大小是根据图像的大小来决定的)
    def screenshot_image(image): crop = image[0:512, 0:600] # 裁剪坐标为[y0:y1, x0:x1] cv2.imwrite("crop.jpg", crop)
    if __name__ == '__main__':
        img = "./0412.jpg"
        read_img = cv2.imread(img)
       # 因为我的原图是(512,512,3)所以为了保证合并的图像不发生形变,自己画了一张(512,512,3)的图
        src = np.zeros((512, 512, 3), np.uint8)
        bit_img = cv2.bitwise_not(src)
        merge_img = merge_image(read_img, bit_img)
        cv2.imshow("merge_img", merge_img)
        cv2.imwrite("./merge_img.jpg", merge_img)
    
        iamge = screenshot_image(merge_img)
    
        ret = "瞅你咋滴!"
        img = cv2ImgAddText(iamge, ret, 512/2-10, 546, (255, 0, 139), 20)
        cv2.imshow('show', img)
        cv2.waitKey(0)
  • 相关阅读:
    windows7 下 apache2.4 和 php5.5 及 mysql5.6 的安装与配置
    JavaScript高级编程 (1)
    关于解决乱码问题的一点探索之二(涉及Unicode(utf-16)和GBK)
    关于解决乱码问题的一点探索之一(涉及utf-8和GBK)
    Windows上安装、配置MySQL的常见问题
    解析DXF图形文件格式
    vue三十一:vue配置反向代理
    vue三十:eslint修复错误和打包用于生产
    vue二十九:多个文件组件集成
    vue二十八:Vue-Cli之环境搭建之node安装脚手架和使用脚手架创建vue项目
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/12683998.html
Copyright © 2011-2022 走看看