一些稍微有用的项目
全自动二次函数解析&图像生成
顾名思义,就是一个能够根据你输入的一次项,二次项系数和常数项生成相对应的解析(delta,与x轴的交点),并生成图像。
其实就是把abc三个值换成了变量,没多大难度
具体的代码实现(少数的我写了注释的代码),需要matplotlib,numpy这两个库,22年写的应该是。
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import pyplot as plt
import math
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.arange(-10, 10, 0.1)
A = int(input('二次项系数'))
B = int(input('一次项系数'))
C = int(input('常数项'))
# 查成分
if A < 0:
print("开口向下")
else:
print("开口向上")
DingX = B/-2*A
DingY = 4*A*C - B * B / 4 * A
# 画出成分
print(DingX, DingY)
y = A * x * x + B * x + C
plt.xlabel('x')
plt.ylabel('y')
plt.title("一元二次函数")
plt.plot(x, y)
plt.show()
图片转彩色字符画
说实话我自己也没绷住,这个属于是最没用的
灰白的尚且有些意义,加了彩色是脱裤子放屁。
代码实现,需要opencv这个库
import cv2
charSize = 2 # 字符尺寸
string = "随便'"
count = len(string)
img = cv2.imread('3.jpg')
u, v, _ = img.shape
c = img*0 + 255
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
for i in range(0, u, 6):
for j in range(0, v, 6):
pix = gray[i, j]
b, g, r = img[i, j]
zifu = string[int(((count - 1) * pix) / 256)]
cv2.putText(c, zifu, (j, i), cv2.FONT_HERSHEY_COMPLEX,
charSize, (int(b), int(g), int(r)), 1)
cv2.imwrite('output.png', c)
素描化图片
这个效果好,做遗照相当合适(
代码实现
需要pillow,numpy两个库
from PIL import Image
import numpy as np
a=np.asarray(Image.open("3.jpg").convert("L")).astype("float")
depth=10#深度的范围为0~100,我们先取10这个数
grad = np.gradient(a) #取图像灰度的梯度值,有两个
grad_x, grad_y = grad #分别取横纵图像梯度值
#将高度融入纵横梯度当中,也可以理解让梯度变化不那么明显
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
#
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A
#设定了一个光源点,知道角度,来算出单位的x,y,z的长度
vec_el = np.pi/2.2 # 光源的俯视角度,弧度值
vec_az = np.pi/4. # 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) #光源对y 轴的影响
dz = np.sin(vec_el) #光源对z 轴的影响
#光源归一化
b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)
b = b.clip(0,255)
im = Image.fromarray(b.astype('uint8')) #重构图像
im.save('6sav.jpg')
QQ信息轰炸
看名字就知道了,需要pynput这个库
from pynput.mouse import Button, Controller as mouse_Controller
from pynput.keyboard import Key, Controller as key_Controller
import time
time.sleep(3)
mouse = mouse_Controller() # 控制鼠标
keyboard = key_Controller()
mouse.press(Button.left) # 按住鼠标左键
mouse.release(Button.left) # 松开鼠标左键
for i in range(99): #总共发多少次
time.sleep(0.1) #消息发送间隔时间
keyboard.type('cnm') #发送的消息内容,不一定要c他m
keyboard.press(Key.enter)
keyboard.release(Key.enter)
这个不大好演示,我还没有找到一个很好的视频托管平台,等我找到了会把演示视频补上。
三年属实太长了,东西做了很多只是少数发到了朋友圈和动态,很多东西我都没有演示,这两三天内我差中选优,多做几期,纪念,歌颂我平凡的爱好。