网站网站营销特点,wordpress 友情链接分类,莆田网站建设创意,连接友谊Long time no see!哈哈#xff0c;假期终于有时间做一点自己喜欢的东西了
还是想说#xff0c;每天花一点时间投在自己喜欢的事情上#xff0c;或者专攻一些平时不学的方向#xff0c;真的很酷#xff01;
图片绘制
对于图像绘制#xff0c;可以分为#xff1a;图像创…Long time no see!哈哈假期终于有时间做一点自己喜欢的东西了
还是想说每天花一点时间投在自己喜欢的事情上或者专攻一些平时不学的方向真的很酷
图片绘制
对于图像绘制可以分为图像创建对象处理—绘制图像操作—图像呈现效果呈现。这三个步骤又可以根据需求和习惯进行库的选取函数运用
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt# 1 创建一个空白的图像
img np.zeros((512,512,3), np.uint8)
# 2 绘制图形
cv.line(img,(0,0),(511,511),(55,0,0),5)
#直线起点终点颜色
cv.rectangle(img,(384,0),(510,128),(0,255,250),3)
#矩形左上坐标右下坐标颜色宽度
cv.circle(img,(447,63), 63, (0,0,255), -1)
#圆心半径
font cv.FONT_HERSHEY_SIMPLEX
#绘制字体
cv.putText(img,华 H_lilium ,(10,500), font, 2,(200,55,255),2,cv.LINE_AA)
# font ImageFont.truetype(simsun.ttc, 40) # 这里使用宋体字体你可以根据需要更改字体文件确保字体文件存在
# cv.putText(img,华 YU MEI,(10,500), font, 2,(200,55,255),2,cv.LINE_AA)
# 绘制中文文本
# 3 图像展示
img_rgb cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.rcParams[font.sans-serif][SimHei]#设置 matplotlib 的字体为 SimHei这是一种支持中文的字体。
plt.title(匹配结果)
plt.xticks([]), plt.yticks([])#坐标隐藏
plt.show()1.图像创建
一般创建出来的图像可以控制大小、颜色通道BGR、色彩
# 读取图像
img np.zeros((520, 512, 3), np.uint8)
img[:] 255#可使创建背景图像转为白色更容易观察颜色与形状2.绘制函数
本次举例了直线矩形圆绘制。
绘制图像的函数其实很容易理解万能公式
cv.图像英文操作对象img,关键点坐标大小颜色线条粗细
# 2 绘制图形
cv.line(img,(0,0),(511,511),(55,0,0),5)
#直线起点终点颜色
cv.rectangle(img,(384,0),(510,128),(0,255,250),3)
#矩形左上坐标右下坐标颜色宽度
cv.circle(img,(447,63), 63, (0,0,255), -1)
#圆心半径 关于字体展示有一个小点可以注意到输出的中文变成“”无法识别这是 因为选择的字体font确实汉字。我在网上找到了解决办法不过感觉有点麻烦要加入库引入一个新font,还要转换图像类型。不过没关系这也算是文字传承吧嘿嘿
import cv2 as cv
from PIL import Image, ImageDraw, ImageFont
import numpy as np# 读取图像
img np.zeros((520, 512, 3), np.uint8)
img[:] 255
# 将 OpenCV 图像转换为 PIL 图像
pil_img Image.fromarray(cv.cvtColor(img, cv.COLOR_BGR2RGB))
# 创建一个可绘制对象
draw ImageDraw.Draw(pil_img)
# 设置字体和字体大小
font ImageFont.truetype(simsun.ttc, 40) # 这里使用宋体字体你可以根据需要更改字体文件确保字体文件存在
# 绘制中文文本
draw.text((10, 50), 华 ,H_lilium, (70, 55, 150), fontfont)#RGB
# 将 PIL 图像转换回 OpenCV 图像
img cv.cvtColor(np.array(pil_img), cv.COLOR_RGB2BGR)# 显示图像
cv.imshow(Image with Chinese Text, img)
cv.waitKey(0)
cv.destroyAllWindows() 图像展示
关键的三段函数创建图像显示窗口显示时间执行指令
# 显示图像
cv.imshow(Image with Chinese Text, img)
cv.waitKey(0)
cv.destroyAllWindows()
图片加法混合
1.加法
加法可以分两类Opencv/NumPy,简单的0.50.5效果其实并不理想
注意1.黑色部分相加无法体现 2.相加图像必须大小规格一样 3.可以利用掩膜色彩 #加法函数# 使用 OpenCV 的 add 函数进行图像加法
img3 cv2.add(img2, img1)
# 使用 NumPy 的加法进行图像加法
img4 img2 img1
import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
img1 cv2.imread(D1.jpg)
img2 cv2.imread(D3(1).jpg)# 将 img2 转换为 HSV 颜色空间
hsv cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)# 定义红色的 HSV 范围
minRed np.array([0, 50, 50])
maxRed np.array([60, 255, 255])# 创建掩膜
mask cv2.inRange(hsv, minRed, maxRed)# 提取红色部分
red cv2.bitwise_and(img2, img2, maskmask)# 显示提取的红色部分
cv2.imshow(red, red)# 等待按键事件
cv2.waitKey(0)# 关闭所有 OpenCV 窗口
cv2.destroyAllWindows()# 使用 OpenCV 的 add 函数进行图像加法
img3 cv2.add(img2, img1)# 使用 NumPy 的加法进行图像加法
img4 img2 img1# 再次使用 OpenCV 的 add 函数进行图像加法
img5 cv2.add(img1, img2)# 创建子图
fig, axes plt.subplots(nrows2, ncols2, figsize(10, 8), dpi100)# 显示原始图像
axes[0, 0].imshow(img1[:, :, ::-1])
axes[0, 0].set_title(原始图像 1)# 显示原始图像
axes[0, 1].imshow(img2[:, :, ::-1])
axes[0, 1].set_title(原始图像 2)# 显示 OpenCV 加法结果
axes[1, 0].imshow(img3[:, :, ::-1])
axes[1, 0].set_title(OpenCV 加法)# 显示 NumPy 加法结果
axes[1, 1].imshow(img4[:, :, ::-1])
axes[1, 1].set_title(NumPy 加法)# 调整子图布局
plt.tight_layout()# 显示图像
plt.show() 2.混合
图像混合根据占比调制参数对图像要求与加法一致。混合更能满足对图像的融洽处理
#图像混合
img5cv2.addWeighted(img1,0.3,img2,0.7,0) 3.数列处理
引入数列来呈现图像能更清晰地了解图像的变化行列分辨率
# 创建子图
fig, axes plt.subplots(nrows2, ncols3, figsize(10, 8), dpi100)# 显示原始图像
axes[0, 0].imshow(img1[:, :, ::-1])
axes[0, 0].set_title(原始图像 1)
有趣的图像绘制
在小学的时候就对数学很感兴趣有一次同学打趣到那我们来挑战画正17边形吧我一口答应下来。结局是谁也没有画出正17边形但是我却发现了一个美妙的永远画不完的图形当时非常兴奋暗暗得意“我长大一定要研究清楚然后成为一名数学家”哈哈哈这个思想一直存活至高中后来在学斐波那契额数列时见到了一个极其相似的图像我当时没有失落也没有遗憾反而有些庆幸——我跨越了时间的限制悄悄与不知名的人来了一次心灵意识的交汇。后来我就手绘了这一副图放在了我的数学错题本上并暗自发誓“一定要用机械语言将这个美丽的图像以我的方式展示出来”
到了大学学了编程语言似乎一切想法都不再是遥不可及了。到了寒假嘿嘿我好像实现了承诺和小小的自己也完成了一次心灵的交汇(当然还有豆包帮了大忙)虽然只是简单的理想图像的呈现没有体现我的“中交线”无限绘图而是“定点”有限次绘图但是也是一大突破点啦
顺势一说为了体现这一过程还用了动画哟 import cv2 as cv
import numpy as np
import timedef main():center (256, 256)#定圆心radius 230#距离圆心范围点的半径num_points 16#所需要的个数points []#空列表用于储存点for i in range(num_points):# 计算每个点的角度angle 2 * np.pi * i / num_points#2Π/点数# 计算点的坐标x center[0] (radius 1) * np.cos(angle)y center[1] (radius 1) * np.sin(angle)#三角函数中余弦正弦points.append((int(x), int(y)))# 创建一个空白图像img np.zeros((512, 512, 3), np.uint8)img[:]255cv.namedWindow(Image)for point in points:cv.circle(img, point, 3, (225, 10, 10), -1)cv.imshow(Image, img)cv.waitKey(100) # 显示 500 毫秒for i in range(len(points)):for j in range(i 1, len(points)):cv.line(img, points[i], points[j], (220, 110, 0), 1)#BGRcv.imshow(Image, img)cv.waitKey(100) # 显示 500 毫秒cv.waitKey(0)cv.destroyAllWindows()if __name__ __main__:main() 小小心得
在学这个操作的时候我就感觉到现在所学的图像处理就是对早就接触过的美图软件进行一次理性、专业的解剖哈哈这里的图片加法和混合就像图片叠加之前的图像特定颜色通道选取就是低级一点的滤镜。
当然图像处理的核心就是满足人的需求而人的需求也是推进技术学习技术进步的一大动力 ——解锁2025年关键词《相信》 我相信念念不忘必有回响