Python,OpenCV制作全透明图,简单的图片

您所在的位置:网站首页 空白png透明图片怎么做 Python,OpenCV制作全透明图,简单的图片

Python,OpenCV制作全透明图,简单的图片

2023-09-17 07:39| 来源: 网络整理| 查看: 265

Python,OpenCV制作全透明图,简单的图片 1. [基本的图片操作方法](https://blog.csdn.net/qq_40985985/article/details/110951435)1.1 效果图1.2 源码 2. [Numpy数组操作图像之截取ROI、增加行与列](https://blog.csdn.net/qq_40985985/article/details/110951435)3. 制作透明图3.1 效果图3.2 源码 4. [使用Python,OpenCV制作全透明的logo水印,对图像添加水印](https://blog.csdn.net/qq_40985985/article/details/106213908)

1. 基本的图片操作方法

图片的读写与展示;(默认opencv读出来是 3通道的BGR图;透明图实质上是 BGRA的4通道图 ) 图片的旋转、无损旋转 图片的放大、缩小、保留宽高比的放大缩小 绘制圆、文字、矩形、正方形、椭圆

1.1 效果图

在这里插入图片描述

1.2 源码 import numpy as np import cv2 width = 600 height = 550 img = np.ones((height, width, 4)) * (255, 255, 255, 0) # cv2.imshow("origin", img) # cv2.waitKey(0) # 绘制圆 cX = 131.5 cY = 131.5 radius = 91.50425720214844 # - (int(cX), int(cY)) 圆心像素值 # - radius 半径 # - (0, 0, 255) 颜色 # - -1 负数:填充,正数:线条粗细 cv2.circle(img, (int(cX), int(cY)), int(radius), (0, 0, 255), -1) # 绘制文字 # - img 图片 # - "Good job" 文字内容 # - (int(cX - 10), int(cY)) 绘制起始的像素 # - cv2.FONT_HERSHEY_SIMPLEX # - 0.45 基于字体特定基大小的比例因子 # - (0, 255, 0) 颜色 # - 2 绘制文本的线条粗细 cv2.putText(img, "Good job", (300, 200), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 5) # 绘制矩形 # - img 图片 # - (int(cX),int(cY)) 矩形左上起始点坐标,必须为正数 # - (int(cX) + w, int(cY) + h) 右下角终点 # - (255, 0, 0) # - 2 正数:线条粗细,负数:填充 w = 60 h = 30 cv2.rectangle(img, (250,250), (250 + w, 250 + h), (255, 0, 0), 3) # 绘制正方形(同矩形,宽度、高度一致) w = 80 h = 80 cv2.rectangle(img, (100,300), (100 + w, 300 + h), (0, 255, 255), -1) # 绘制椭圆 # - img 图像 # - (int(cX), int(cY)) 中心 # - (150,100) 长轴,短轴 # - angle 角度 # - start_angle 开始角度 # - end_angle 结束角度 # - (90,90,90) 颜色 # - -1 负数:填充,正数:线条粗细 cv2.ellipse(img, (400,400), (150, 100), 0, 0, 300, (0, 0, 0), -1) cv2.imshow("image", img) cv2.waitKey(0) 2. Numpy数组操作图像之截取ROI、增加行与列

图片在python中表现为 3通道的BGR,或者4通道的 BGRA 增加行、列;

原始图如下 在这里插入图片描述

增加行列效果图(左上左下右上右下)分别为:左侧增加白色像素、右侧增加白色像素、上方增加黑色像素、下方增加黑色像素 效果图 在这里插入图片描述

3. 制作透明图 3.1 效果图

在这里插入图片描述

3.2 源码 import numpy as np import cv2 import imutils width = 600 height = 550 # 默认生成的是白色的全透明图 img = np.ones((height, width, 4)) * (255, 255, 255, 0) cv2.imshow("origin", img) cv2.waitKey(0) # 绘制圆 cX = 131.5 cY = 131.5 radius = 91.50425720214844 # - (int(cX), int(cY)) 圆心像素值 # - radius 半径 # - (0, 0, 255) 颜色 # - -1 负数:填充,正数:线条粗细 cv2.circle(img, (int(cX), int(cY)), int(radius), (0, 0, 255), -1) # 绘制文字 # - img 图片 # - "Good job" 文字内容 # - (int(cX - 10), int(cY)) 绘制起始的像素 # - cv2.FONT_HERSHEY_SIMPLEX # - 0.45 基于字体特定基大小的比例因子 # - (0, 255, 0) 颜色 # - 2 绘制文本的线条粗细 cv2.putText(img, "Good job", (300, 200), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 5) # 绘制矩形 # - img 图片 # - (int(cX),int(cY)) 矩形左上起始点坐标,必须为正数 # - (int(cX) + w, int(cY) + h) 右下角终点 # - (255, 0, 0) # - 2 正数:线条粗细,负数:填充 w = 60 h = 30 cv2.rectangle(img, (250, 250), (250 + w, 250 + h), (255, 0, 0), 3) # 绘制正方形(同矩形,宽度、高度一致) w = 80 h = 80 cv2.rectangle(img, (100, 300), (100 + w, 300 + h), (0, 255, 255), -1) # 绘制椭圆 # - img 图像 # - (int(cX), int(cY)) 中心 # - (150,100) 长轴,短轴 # - angle 角度 # - start_angle 开始角度 # - end_angle 结束角度 # - (90,90,90) 颜色 # - -1 负数:填充,正数:线条粗细 cv2.ellipse(img, (400, 400), (150, 100), 0, 0, 300, (0, 0, 0), -1) cv2.imshow("image", img) cv2.waitKey(0) # 保留宽高比的缩放原图为宽度400 img = imutils.resize(img, width=400) # 有像素的地方设置不透明 b, g, r, a = cv2.split(img) for i in range(img.shape[0]): for j in range(img.shape[1]): if not (b[i][j] > 0 and g[i][j] > 0 and r[i][j] > 0): a[i][j] = 255 # 255不透明,0全透明,有像素的地方设置不透明 image = cv2.merge((b, g, r, a)) cv2.imwrite("./images/res.png", image) cv2.destroyAllWindows() 4. 使用Python,OpenCV制作全透明的logo水印,对图像添加水印


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3