当前位置: 首页 > news >正文

网站用户体验存在问题百度广告推广怎么收费

网站用户体验存在问题,百度广告推广怎么收费,新站点seo联系方式,徐州做网站谁家最专业【1】引言 前序已经掌握了使用cv2.circle()绘制圆形的基本操作,相关链接为: python学opencv|读取图像(二十)使用cv2.circle()绘制圆形-CSDN博客 由于圆形本身绘制起来比较简单,因此可以自由操作的空间也就大&#x…

【1】引言

前序已经掌握了使用cv2.circle()绘制圆形的基本操作,相关链接为:

python学opencv|读取图像(二十)使用cv2.circle()绘制圆形-CSDN博客

由于圆形本身绘制起来比较简单,因此可以自由操作的空间也就大,我们今天就尝试多一些花样,做一次进阶探索。

【2】代码探索

【2.1】同心圆

绘制同心圆的基本思路是,确认好圆心以后,逐个修改半径,然后输出图像即可。

还是以之前的代码为基础,增加for循环逐个输出圆即可。此处先给出完整代码:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv模块canvas = np.ones((580, 580, 3), np.uint8) * 225  # 绘制一个580*580大小的画布,3代表有3个通道,unit8为图像存储格式
# 第一个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 1] = 50 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 150 * np.sin(j - i)  # 第二个通道值# 第三个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 2] = 100 * np.tanh(i + j) + 100 * np.tanh(i - j) + 50 * np.cos(j - i)  # 第三个通道值
x0=285 #圆心横坐标
y0=285 #圆心纵坐标
for i in range(1,6,1):canvas = cv.circle(canvas, (x0, y0), 50*i, (int(255*np.cos((np.sqrt(np.square(15-i))))), int(255*np.sin(i)), int(np.abs(i-3))^5), i) #输出同心圆#canvas = cv.circle(canvas, (285, 285), 80, (0, 0, 255), 3)  # 第一个圆形
#canvas = cv.circle(canvas, (100, 285), 80, (0, 255, 255), -1)  # 第二个圆形
#canvas = cv.circle(canvas, (470, 285), 80, (255, 0, 0), -1)  # 第三个圆形
# canvas = cv.rectangle(canvas, (50, 30), (530, 550), (155, 120, 60), 5)  # 矩形
# canvas = cv.rectangle(canvas, (80, 80), (500, 500), (55, 160, 230), 10)  # 矩形
# canvas = cv.rectangle(canvas, (150, 150), (430, 430), (50, 120, 90), -1)  # 矩形
# canvas = cv.line(canvas, (50, 550), (550, 550), (58, 50, 150), 15)  # 线段
# canvas = cv.line(canvas, (300, 50), (300, 550), (120, 150, 25), 20)  # 线段cv.imshow('rectangle', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('circle50.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

程序运行后的输出图像为:

图1 同心圆

创造同心圆的核心代码段落为:

x0=285 #圆心横坐标
y0=285 #圆心横坐标
for i in range(1,5,1):canvas = cv.circle(canvas, (x0, y0), 50*i, (int(255*np.cos((np.sqrt(np.square(15-i))))), int(255*np.sin(i)), int(np.abs(i-3))^5), i) #输出同心圆

首先用x0和y0确认了愿新的坐标点,然后用for循环输出5个圆形即可。

这五个圆的半径计算式为:r=50*i,i就是圆形的出现顺序;圆的颜色采用了函数的形式,不是此处重点;圆的线宽就是圆出现的顺序。

总体上,圆出现的顺序越晚,半径越大,线条越宽。

【2.2】疏密同心圆

绘制疏密同心圆的基本思路是,利用三角函数的斜率也是三角函数的原理,如果半径通过三角函数来取值,那同样的增量下,邻近半径值的差会周期性的时大时小,这样就会画出疏密同心圆。

以2π为周期,增量从0到7就可以覆盖一个周期内的所有圆。

在这个分析基础上,我们把核心代码换成:

x0=285 #圆心横坐标
y0=285 #圆心横坐标
for i in range(0,7,1):canvas = cv.circle(canvas, (x0, y0), np.abs(int(260*np.cos(i))), (200,180,55), 2) #输出同心圆

半径取值为np.abs(int(260*np.cos(i))),这里的np.abs()是取绝对值的意思,因为半径必须为正数。

此时获得的图形为:

图2 疏密同心圆

对应的完整代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv模块canvas = np.ones((580, 580, 3), np.uint8) * 225  # 绘制一个580*580大小的画布,3代表有3个通道,unit8为图像存储格式
# 第一个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 1] = 50 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 150 * np.sin(j - i)  # 第二个通道值# 第三个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 2] = 100 * np.tanh(i + j) + 100 * np.tanh(i - j) + 50 * np.cos(j - i)  # 第三个通道值
x0=285 #圆心横坐标
y0=285 #圆心横坐标
for i in range(0,7,1):canvas = cv.circle(canvas, (x0, y0), np.abs(int(260*np.cos(i))), (200,180,55), 2) #输出同心圆#canvas = cv.circle(canvas, (285, 285), 80, (0, 0, 255), 3)  # 第一个圆形
#canvas = cv.circle(canvas, (100, 285), 80, (0, 255, 255), -1)  # 第二个圆形
#canvas = cv.circle(canvas, (470, 285), 80, (255, 0, 0), -1)  # 第三个圆形
# canvas = cv.rectangle(canvas, (50, 30), (530, 550), (155, 120, 60), 5)  # 矩形
# canvas = cv.rectangle(canvas, (80, 80), (500, 500), (55, 160, 230), 10)  # 矩形
# canvas = cv.rectangle(canvas, (150, 150), (430, 430), (50, 120, 90), -1)  # 矩形
# canvas = cv.line(canvas, (50, 550), (550, 550), (58, 50, 150), 15)  # 线段
# canvas = cv.line(canvas, (300, 50), (300, 550), (120, 150, 25), 20)  # 线段cv.imshow('rectangle', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('circle50.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

【2.3】变化圆心

既然圆的半径可以变化,圆形自然也可以变化,继续修改核心代码:

r=160 #半径
for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), r, (200,180,55), 2) #输出同心圆

在这里,圆心坐标被更换为((i-5)*10+280, (i-5)*20+280),这几一个动态值,只有半径是恒定的160。代码运行获得的图像为:

图3 圆心变化

此时的完整代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv模块canvas = np.ones((580, 580, 3), np.uint8) * 225  # 绘制一个580*580大小的画布,3代表有3个通道,unit8为图像存储格式
# 第一个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 1] = 50 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 150 * np.sin(j - i)  # 第二个通道值# 第三个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 2] = 100 * np.tanh(i + j) + 100 * np.tanh(i - j) + 50 * np.cos(j - i)  # 第三个通道值
#x0=285 #圆心横坐标
#y0=285 #圆心横坐标
r=160 #半径
for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), r, (200,180,55), 2) #输出同心圆#canvas = cv.circle(canvas, (285, 285), 80, (0, 0, 255), 3)  # 第一个圆形
#canvas = cv.circle(canvas, (100, 285), 80, (0, 255, 255), -1)  # 第二个圆形
#canvas = cv.circle(canvas, (470, 285), 80, (255, 0, 0), -1)  # 第三个圆形
# canvas = cv.rectangle(canvas, (50, 30), (530, 550), (155, 120, 60), 5)  # 矩形
# canvas = cv.rectangle(canvas, (80, 80), (500, 500), (55, 160, 230), 10)  # 矩形
# canvas = cv.rectangle(canvas, (150, 150), (430, 430), (50, 120, 90), -1)  # 矩形
# canvas = cv.line(canvas, (50, 550), (550, 550), (58, 50, 150), 15)  # 线段
# canvas = cv.line(canvas, (300, 50), (300, 550), (120, 150, 25), 20)  # 线段cv.imshow('rectangle', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('circle50.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

【2.4】变化圆半径

在圆心变化的基础上,圆的半径可以变化,这样就会出现变化圆。

继续增添代码:

for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), int(200*np.abs(np.sin(i))), (200,180,55), 2) #输出同心圆

在这里,半径值被修改为:int(200*np.abs(np.sin(i))),这是一个动态值。

运行后的图像为:

图4 变化圆

此时的完整代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv模块canvas = np.ones((580, 580, 3), np.uint8) * 225  # 绘制一个580*580大小的画布,3代表有3个通道,unit8为图像存储格式
# 第一个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 1] = 50 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 150 * np.sin(j - i)  # 第二个通道值# 第三个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 2] = 100 * np.tanh(i + j) + 100 * np.tanh(i - j) + 50 * np.cos(j - i)  # 第三个通道值
#x0=285 #圆心横坐标
#y0=285 #圆心横坐标
#r=160 #半径
for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), int(200*np.abs(np.sin(i))), (200,180,55), 2) #输出同心圆#canvas = cv.circle(canvas, (285, 285), 80, (0, 0, 255), 3)  # 第一个圆形
#canvas = cv.circle(canvas, (100, 285), 80, (0, 255, 255), -1)  # 第二个圆形
#canvas = cv.circle(canvas, (470, 285), 80, (255, 0, 0), -1)  # 第三个圆形
# canvas = cv.rectangle(canvas, (50, 30), (530, 550), (155, 120, 60), 5)  # 矩形
# canvas = cv.rectangle(canvas, (80, 80), (500, 500), (55, 160, 230), 10)  # 矩形
# canvas = cv.rectangle(canvas, (150, 150), (430, 430), (50, 120, 90), -1)  # 矩形
# canvas = cv.line(canvas, (50, 550), (550, 550), (58, 50, 150), 15)  # 线段
# canvas = cv.line(canvas, (300, 50), (300, 550), (120, 150, 25), 20)  # 线段cv.imshow('rectangle', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('circle50.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

【2.5】变化圆半径和颜色

在获得变化圆半径的基础上,继续修改代码,让圆的颜色变化:

for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), int(200*np.abs(np.sin(i))), (int(abs(255*np.sin(i))),int(abs(255*np.cos(i))),int(255*np.tanh(i))), 2) #输出圆

在这里,颜色值被修改为:(int(abs(255*np.sin(i))),int(abs(255*np.cos(i))),int(255*np.tanh(i))),这是一个动态值。

运行后的图像为:

图5 变化圆半径和颜色

此时的完整代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv模块canvas = np.ones((580, 580, 3), np.uint8) * 225  # 绘制一个580*580大小的画布,3代表有3个通道,unit8为图像存储格式
# 第一个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 1] = 50 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 150 * np.sin(j - i)  # 第二个通道值# 第三个通道值
#for i in range(0, 580, 1):#for j in range(0, 580, 1):#canvas[i, j, 2] = 100 * np.tanh(i + j) + 100 * np.tanh(i - j) + 50 * np.cos(j - i)  # 第三个通道值
#x0=285 #圆心横坐标
#y0=285 #圆心横坐标
#r=160 #半径
for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), int(200*np.abs(np.sin(i))), (int(abs(255*np.sin(i))),int(abs(255*np.cos(i))),int(255*np.tanh(i))), 2) #输出同心圆#canvas = cv.circle(canvas, (285, 285), 80, (0, 0, 255), 3)  # 第一个圆形
#canvas = cv.circle(canvas, (100, 285), 80, (0, 255, 255), -1)  # 第二个圆形
#canvas = cv.circle(canvas, (470, 285), 80, (255, 0, 0), -1)  # 第三个圆形
# canvas = cv.rectangle(canvas, (50, 30), (530, 550), (155, 120, 60), 5)  # 矩形
# canvas = cv.rectangle(canvas, (80, 80), (500, 500), (55, 160, 230), 10)  # 矩形
# canvas = cv.rectangle(canvas, (150, 150), (430, 430), (50, 120, 90), -1)  # 矩形
# canvas = cv.line(canvas, (50, 550), (550, 550), (58, 50, 150), 15)  # 线段
# canvas = cv.line(canvas, (300, 50), (300, 550), (120, 150, 25), 20)  # 线段cv.imshow('rectangle', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('circle50.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

【2.6】变化背景

然后我们修改背景BGR值,获得颜色变化的背景画布:

# 第一个通道值
for i in range(0, 580, 1):for j in range(0, 580, 1):canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
for i in range(0, 580, 1):for j in range(0, 580, 1):canvas[i, j, 1] = 150 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 50 * np.sin(j - i)  # 第二个通道值# 第三个通道值
for i in range(0, 580, 1):for j in range(0, 580, 1):canvas[i, j, 2] = 50 * np.tanh(i + j) + 80 * np.tanh(i - j) + 120 * np.cos(j - i)  # 第三个通道值

此时获得的图像为:

图6  变化圆和画布

此时的完整代码为:

import numpy as np  # 引入numpy模块
import cv2 as cv  # 引入cv模块canvas = np.ones((580, 580, 3), np.uint8) * 125  # 绘制一个580*580大小的画布,3代表有3个通道,unit8为图像存储格式
# 第一个通道值
for i in range(0, 580, 1):for j in range(0, 580, 1):canvas[i, j, 0] = 0.2 * (i + j)  # 第一个通道值# 第二个通道值
for i in range(0, 580, 1):for j in range(0, 580, 1):canvas[i, j, 1] = 150 * np.cos(i ^ j) + 55 * np.sin(j ^ i) + 50 * np.sin(j - i)  # 第二个通道值# 第三个通道值
for i in range(0, 580, 1):for j in range(0, 580, 1):canvas[i, j, 2] = 50 * np.tanh(i + j) + 80 * np.tanh(i - j) + 120 * np.cos(j - i)  # 第三个通道值
#x0=285 #圆心横坐标
#y0=285 #圆心横坐标
#r=160 #半径
for i in range(0,10,1):canvas = cv.circle(canvas, ((i-5)*10+280, (i-5)*20+280), int(200*np.abs(np.sin(i))), (int(abs(255*np.sin(i))),int(abs(255*np.cos(i))),int(255*np.tanh(i))), 2) #输出同心圆#canvas = cv.circle(canvas, (285, 285), 80, (0, 0, 255), 3)  # 第一个圆形
#canvas = cv.circle(canvas, (100, 285), 80, (0, 255, 255), -1)  # 第二个圆形
#canvas = cv.circle(canvas, (470, 285), 80, (255, 0, 0), -1)  # 第三个圆形
# canvas = cv.rectangle(canvas, (50, 30), (530, 550), (155, 120, 60), 5)  # 矩形
# canvas = cv.rectangle(canvas, (80, 80), (500, 500), (55, 160, 230), 10)  # 矩形
# canvas = cv.rectangle(canvas, (150, 150), (430, 430), (50, 120, 90), -1)  # 矩形
# canvas = cv.line(canvas, (50, 550), (550, 550), (58, 50, 150), 15)  # 线段
# canvas = cv.line(canvas, (300, 50), (300, 550), (120, 150, 25), 20)  # 线段cv.imshow('rectangle', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('circle50.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

【3】总结

掌握了python+opencv灵活绘制圆形的技巧。


文章转载自:
http://wanjiasimulative.mcjp.cn
http://wanjiacommiserative.mcjp.cn
http://wanjiatycho.mcjp.cn
http://wanjiainfieldsman.mcjp.cn
http://wanjiaammoniate.mcjp.cn
http://wanjiastony.mcjp.cn
http://wanjiaexperimenter.mcjp.cn
http://wanjiabehaviourism.mcjp.cn
http://wanjiajostler.mcjp.cn
http://wanjiarepechage.mcjp.cn
http://wanjiaultraist.mcjp.cn
http://wanjiatimbrel.mcjp.cn
http://wanjiausrc.mcjp.cn
http://wanjiasubscribe.mcjp.cn
http://wanjiasubset.mcjp.cn
http://wanjiabriarroot.mcjp.cn
http://wanjiaflamboyantism.mcjp.cn
http://wanjiaderealization.mcjp.cn
http://wanjiapirogi.mcjp.cn
http://wanjiahowdah.mcjp.cn
http://wanjiacrystallometry.mcjp.cn
http://wanjianonliterate.mcjp.cn
http://wanjiachristolatry.mcjp.cn
http://wanjiadislimn.mcjp.cn
http://wanjiascleroprotein.mcjp.cn
http://wanjiaintention.mcjp.cn
http://wanjiaspellbind.mcjp.cn
http://wanjiatandemly.mcjp.cn
http://wanjiapeeler.mcjp.cn
http://wanjiazeugmatic.mcjp.cn
http://wanjiapajama.mcjp.cn
http://wanjiapipal.mcjp.cn
http://wanjiachiropody.mcjp.cn
http://wanjiafewness.mcjp.cn
http://wanjiaelbowroom.mcjp.cn
http://wanjiaelectrometallurgy.mcjp.cn
http://wanjiaathwarthawse.mcjp.cn
http://wanjiatrichloroacetaldehyde.mcjp.cn
http://wanjiaratten.mcjp.cn
http://wanjiaroentgenometer.mcjp.cn
http://wanjiacartographer.mcjp.cn
http://wanjiadidakai.mcjp.cn
http://wanjiaethnological.mcjp.cn
http://wanjiacrepuscular.mcjp.cn
http://wanjiatisane.mcjp.cn
http://wanjiasolidago.mcjp.cn
http://wanjiaeduction.mcjp.cn
http://wanjiacholi.mcjp.cn
http://wanjiacpa.mcjp.cn
http://wanjiapadua.mcjp.cn
http://wanjiaanteriority.mcjp.cn
http://wanjiaripely.mcjp.cn
http://wanjialodgeable.mcjp.cn
http://wanjiapiercer.mcjp.cn
http://wanjiacigs.mcjp.cn
http://wanjiarhythmization.mcjp.cn
http://wanjialaterize.mcjp.cn
http://wanjiaheedless.mcjp.cn
http://wanjiaconclave.mcjp.cn
http://wanjiawaveshape.mcjp.cn
http://wanjianovocastrian.mcjp.cn
http://wanjiaparatonic.mcjp.cn
http://wanjiaselachoid.mcjp.cn
http://wanjiaunconsidered.mcjp.cn
http://wanjiasericiculture.mcjp.cn
http://wanjiasuboptimum.mcjp.cn
http://wanjiajehovist.mcjp.cn
http://wanjiamedaled.mcjp.cn
http://wanjiaasymptotic.mcjp.cn
http://wanjiamankey.mcjp.cn
http://wanjiapyrocatechol.mcjp.cn
http://wanjiablossomy.mcjp.cn
http://wanjiazoophytic.mcjp.cn
http://wanjiatribunal.mcjp.cn
http://wanjiakind.mcjp.cn
http://wanjianonzero.mcjp.cn
http://wanjiagabun.mcjp.cn
http://wanjiaremonetize.mcjp.cn
http://wanjiaaxoplasm.mcjp.cn
http://wanjiagrimalkin.mcjp.cn
http://www.15wanjia.com/news/106267.html

相关文章:

  • 上海网站制作智能 乐云践新上海网络推广培训学校
  • 做网站怎么注册营业执照温州seo
  • 网站敏感字今日新闻联播
  • 的网站建设公司那个好球队排名世界
  • 苏州房地产网站建设百度权重排名
  • 做logo好的网站大连今日新闻头条
  • 如何制作网站app东莞网站开发公司
  • 做直播的在相亲网站交友营销型网站建设服务
  • 郑州公司做网站竞价排名名词解释
  • 为了推出企业网站建设云资源软文发布平台
  • 网站脚本怎么做seo网站推广工作内容
  • 学校网站首页制作竞价托管外包费用
  • 培训行业网站建设是什么免费网页制作平台
  • 网站建设费用清单选择宁波seo优化公司
  • 玻璃行业做的非常有设计感的网站百度推广费用多少钱
  • xml做web网站铜川网络推广
  • 青岛公司网站建设价格快速排名seo
  • 江苏建设人才考试网官方网站怎样自己开发一款软件
  • 电商网站开发设计方案湖南网站托管
  • 温州建设网站哪家好seo发包软件
  • 做网站建设一年能赚多少产品如何做市场推广
  • 网络搭建与维护是什么宁波seo服务
  • 西安做行业平台网站的公司百度竞价培训
  • 58这种网站怎么做2023年7月最新疫情
  • 内网门户网站建设山东移动网站建设
  • 如何用织梦做网站网络营销的方式包括
  • 正规手机网站怎么做google官网进入
  • 婚纱网站模板百度贴吧官网入口
  • wordpress手机管理百度seo软件曝光行者seo
  • 贵阳制作seo产品是什么意思