快速学完OpenCV+python计算机视觉图像处理(四)

2023-11-13

返回主目录

4 图像基本特效

4-1 图像特效介绍

图像特效分为以下几个,分别是:

  1. 灰度处理
  2. 底板效果
  3. 马赛克
  4. 毛玻璃效果
  5. 图像融合
  6. 图片蓝色
  7. 边缘检测
  8. 浮雕效果

4-2 图像灰度处理1

灰度处理常用方法:

  • 方法1,直接使用imread里面的参数,代码如下:
import cv2
src = cv2.imread('17.jpg', 1)
gray1 = cv2.imread('17.jpg', 0)
gray2 = cv2.imread('17.jpg', cv2.IMREAD_GRAYSCALE)
print(src.shape)
print(gray1.shape)
print(gray2.shape)
cv2.imshow('src', src)
cv2.imshow('gray1', gray1)
cv2.imshow('gray2', gray2)
cv2.waitKey(0)

运行结果如下:

(308, 204, 3)
(308, 204)
(308, 204)

在这里插入图片描述

  • 方法2,使用OpenCV里面的cvtColor将RGB图像转换为灰度图像,代码如下:
import cv2

src = cv2.imread('17.jpg', 1)
cv2.imshow('src', src)
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-3 图像灰度处理2

  • 方法3,将RGB3个维度的数相加除以3,这就是均值算法Average,代码如下:
import cv2
import numpy as np

img = cv2.imread('16.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

dst = np.zeros((height, width, 3), np.uint8)
for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        gray = (int(b) + int(g) + int(r)) / 3
        dst[i, j] = np.uint8(gray)

cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

  • 方法4,使用特定公式gray = r0.299+g0.587+b*0.114将RGB图像转换为灰度图像,这公式叫做亮度算法Luminosity,除了亮度算法和均值算法求灰度图像,还有一种明度算法Lightness也是可以将彩色图像转换为灰度图像的。亮度算法代码如下:
import cv2
import numpy as np

img = cv2.imread('15.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

dst = np.zeros(imgInfo, np.uint8)

for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        b = int(b)	# 这里如果不做取整,就会溢出,导致图像变得不伦不类
        g = int(g)
        r = int(r)
        gray = r * 0.299 + g * 0.587 + b * 0.114
        dst[i, j] = np.uint8(gray)
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

  • 方法5,使用明度算法Lightness将彩色图像转换为灰度图像,代码如下:
import cv2
import numpy as np

img = cv2.imread('14.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

dst = np.zeros(imgInfo, np.uint8)  # 新建一个空模板

for i in range(0, height):
    for j in range(0, width):
        b, g, r = img[i, j]
        b = int(b)
        g = int(g)
        r = int(r)
        gray = (max(r, g, b) + min(r, g, b)) / 2
        dst[i, j] = np.uint8(gray)

cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

以下将Luminosity(亮度)、Lightness(明度)、Average(均值)三个算法公式列在下面:

Gray_Luminosity = R*0.299 + G*0.587 + B*0.114
Gray_Lightness = (max(R, G, B) + min(R, G, B)) / 2
Gray_Average = (R + G + B) / 3

4-4 算法优化

代码如下:

import cv2
import numpy as np
import datetime

img = cv2.imread('13.jpg')
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros(imgInfo, np.uint8)
oldtime = datetime.datetime.now()
for i in range(0, height):
    for j in range(0, width):
        b, g, r = img[i, j]
        b = int(b)
        g = int(g)
        r = int(r)
        # r*0.299+g*0.587+b*0.114=((r*0.299+g*0.587+b*0.114)*2^2)*2^-2
        # =(r*1.196+g*2.348+b*0.456)*2^-2约等于(r*1+g*2+b*1)*2^-2
        # 进行二进制位移转换=(r+(b<<1)+b)>>2
        gray = (r + (b << 1) + b) >> 2
        dst[i, j] = np.uint8(gray)
newtime = datetime.datetime.now()
print('after optimize', newtime - oldtime)
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:

before optimize: 0:00:00.261156
after optimize: 0:00:00.203124

从运行结果可以看出,优化后的时间要比优化之前快那么一点点。

4-5 颜色反转

  1. 灰度图像反转

代码如下:

import cv2
import numpy as np

img = cv2.imread('12.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray)
dst = np.zeros(gray.shape, np.uint8)
dst2 = np.zeros((height, width, 1), np.uint8)

for i in range(0, height):
    for j in range(0, width):
        grayPixel = gray[i, j]
        dst[i, j] = 255 - grayPixel

cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

  1. 彩色图像反转

代码如下:

import cv2
import numpy as np

img = cv2.imread('12.jpg', 1)
# cv2.imshow('img', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros(img.shape, np.uint8)
dst2 = np.zeros((height, width, 3), np.uint8)

for i in range(0, height):
    for j in range(0, width):
        b, g, r = img[i, j]
        b2 = int(b)
        g2 = int(g)
        r2 = int(r)
        dst[i, j] = (255 - b, 255 - g, 255 - r)
        dst2[i, j] = (255 - b2, 255 - g2, 255 - r2)

cv2.imshow('dst', dst)
cv2.imshow('dst2', dst2)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-6 马赛克

源代码如下:

import cv2

img = cv2.imread('17.jpg', 1)
cv2.imshow('img', img)

imgInfo = img.shape
print(imgInfo)

height = imgInfo[0]
width = imgInfo[1]

for m in range(140, 180):  # 高,选取图像(100,140)->(150,180)这片区域
    for n in range(100, 150):  # 宽
        if m % 10 == 0 and n % 10 == 0:  # 针对这片区域的10*10小方格进行筛选
            for i in range(0, 10):
                for j in range(0, 10):
                    b, g, r = img[m, n]  # 选择在m->n这个区域的原图像
                    img[i + m, j + n] = b, g, r  # 将m->n这个区域的原图像每一块10*10区域和第一个位置的相同
cv2.imshow('dst', img)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-7 毛玻璃

代码如下:

import cv2
import numpy as np

img = cv2.imread('1.jpg', 1)
cv2.imshow('img', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height, width, 3), np.uint8)
mn = 6
for m in range(0, height - mn):  # 为了防止溢出需要减去6
    for n in range(0, width - mn):
        index = int(np.random.random() * 6)
        dst[m, n] = img[m + index, n + index]

cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-8 图片融合

代码如下:

# dst = src1 * α + src2 * (1 - α)
import cv2
import numpy as np

img1 = cv2.imread('1.jpg')
img2 = cv2.imread('2.jpg')
img1Info = img1.shape
height = img1Info[0]
width = img1Info[1]

# ROI   # 这个要不要无所谓
# roiH = int(height * 0.5)
# roiW = int(width * 0.5)
# img1ROI = img1[0:roiH, 0:roiW]
# img2ROI = img2[0:roiH, 0:roiW]

# dst
dst = np.zeros((height, width, 3), np.uint8)
# dst2 = np.zeros((roiH, roiW, 3), np.uint8)
dst = cv2.addWeighted(img1, 0.4, img2, 0.6, 0)
# dst2 = cv2.addWeighted(img1ROI, 0.5, img1ROI, 0.5, 0)
cv2.imshow('dst', dst)
# cv2.imshow('dst2', dst2)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-9 边缘检测1

这里讲的边缘检测算子是Canny算子,Canny 的目标是找到一个最优的边缘检测算法,其原型为:

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 

必要参数:

  • 第一个参数是需要处理的原图像,该图像必须为单通道的灰度图;
  • 第二个参数是低阈值,小于这个值时,像素值排除 ;
  • 第三个参数是高阈值,大于这个值时,像素值保留为边缘像素;
  • 注:当像素值位于两个阈值中间时,该像素仅仅在连接到一个高于高阈值的像素时被保留。

代码如下:

import cv2

# 边缘检测分为3个步骤:1.BGR2Gray;2.GaussianBlur;3.Canny
img = cv2.imread('3.jpg')
cv2.imshow('img', img)
# 1.将彩色图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 2.将灰度图像通过高斯滤波进行平滑处理
gauss = cv2.GaussianBlur(gray, (5, 5), 0)  # 核大小必须是奇数,最后一个参数0代表高斯核标准偏差
# 3.利用Canny算子检测出边缘
dst = cv2.Canny(gauss, 100, 110)  # 第二个和第三个是最小最大阈值,一般都是经验值
cv2.imshow('canny', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-10 边缘检测2

这里使用边缘检测算子是Soble算子,Sobel 算子是一个主要用作边缘检测的离散微分算子 (discrete differentiation operator)。Sobel算子结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。

代码如下:

import cv2
import numpy as np
import math

img = cv2.imread('5.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
cv2.imshow('src', img)

# sobel:1.算子模板;2.图片卷积;3.阈值判决
# [1 2 1          [ 1 0 -1
#  0 0 0            2 0 -2
# -1 -2 -1 ]       1 0 -1 ]

# [1 2 3 4] [a b c d] a*1+b*2+c*3+d*4 = dst
# sqrt(a*a+b*b) = f>th
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = np.zeros((height, width, 1), np.uint8)
for i in range(0, height - 2):  # 因为卷积核实3*3,这里需要减去2,要不会造成数据溢出
    for j in range(0, width - 2):
        gy = gray[i, j] * 1 + gray[i, j + 1] * 2 + gray[i, j + 2] * 1 - gray[i + 2, j] * 1 - gray[i + 2, j + 1] * 2 - \
             gray[i + 2, j + 2] * 1  # 垂直变化:将灰度图像与3*3内核进行卷积
        gx = gray[i, j] + gray[i + 1, j] * 2 + gray[i + 2, j] - gray[i, j + 2] - gray[i + 1, j + 2] * 2 - gray[
            i + 2, j + 2]  # 水平变化:将灰度图像与3*3内核进行卷积
        grad = math.sqrt(gx * gx + gy * gy)  # 这里用G=sqrt(Gx^2+Gy^2)来求近似梯度
        grad = math.fabs(gx) + math.fabs(gy)  # 也可以用G=|Gx|+|Gy|求近似梯度
        if grad > 100:  # 大于100的设置为边缘,值越小检测的边缘越浓密
            dst[i, j] = 255  # 255为白色
        else:  # 小于100的不是边缘
            dst[i, j] = 0  # 0为黑色
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-11 浮雕效果

运行代码如下:

import cv2
import numpy as np

img = cv2.imread('7.jpg', 1)
cv2.imshow('img', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# newP = grayP0 - grayP1 + 150
dst = np.zeros((height, width, 1), np.uint8)
for i in range(0, height):
    for j in range(0, width - 1):
        grayP0 = int(gray[i, j])
        grayP1 = int(gray[i, j + 1])
        newP = grayP0 - grayP1 + 150
        if newP > 255:
            newP = 255
        if newP < 0:
            newP = 0
        dst[i, j] = newP
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-12 颜色映射

代码如下:

import cv2
import numpy as np

img = cv2.imread('8.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

dst = np.zeros((height, width, 3), np.uint8)
for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        b = 1.1 * b
        g = 1.1 * g
        r = 6.6 * r
        if b > 255:
            b = 255
        if g > 255:
            g = 255
        if r > 255:
            r = 255
        dst[i, j] = (b, g, r)
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述
哈哈哈,给我们的小姐姐染了个红发

4-13 油画特效

优化特效步骤如下:

  1. 彩色图片转换为灰度图片;
  2. 将图片分割为若干个小方块,统计这些小方块中每一个像素的灰度值(eg:77或者1010的小方块);
  3. 将0~255划分为几个等级,将第二步的结果映射过来分为不同的等级段中,
  4. 找到每个方块中灰度等级最多的像素,并且求取像素的均值。
  5. 将统计出来的平均值替换原来的像素值,最终来实现优化效果
    代码如下:
import cv2
import numpy as np

img = cv2.imread('6.jpg', 1)
cv2.imshow('img', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = np.zeros((height, width, 3), np.uint8)
for i in range(4, height - 4):
    for j in range(4, width - 4):
        array1 = np.zeros(8, np.uint8)
        for m in range(-4, 4):
            for n in range(-4, 4):
                p1 = int(gray[i + m, j + n] / 32)
                array1[p1] = array1[p1] + 1
        currentMax = array1[0]
        l = 0
        for k in range(0, 8):
            if currentMax < array1[k]:
                currentMax = array1[k]
                l = k
        # 简化 均值
        for m in range(-4, 4):
            for n in range(-4, 4):
                if (gray[i + m, j + n] >= (l * 32)) and (gray[i + m, j + n] <= ((l + 1) * 32)):
                    (b, g, r) = img[i + m, j + n]
        dst[i, j] = (b, g, r)
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果如下:

在这里插入图片描述

4-14 线段绘制

绘制线段要用到cv2.line()函数,函数原型为img=cv.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]),主要参数如下:

  • img:源图像
  • pt1:直线起点
  • pt2:直线终点
  • color:需要传入的颜色
  • thickness:线条的粗细,默认值是1
  • linetype:线条的类型,8 连接,抗锯齿等。默认情况是 8 连接。cv2.LINE_AA 为抗锯齿,这样看起来会非常平滑。

代码如下:

import cv2

img = cv2.imread('9.jpg', 1)
cv2.imshow('img', img)

# 绘制线段 1.dst;2.begin;3.end;4.color;5.width;6.type
cv2.line(img, (260, 150), (350, 180), (0, 255, 0), 18, cv2.LINE_AA)

# 绘制三角形
cv2.line(img, (300, 450), (200, 380), (0, 255, 255), 38, cv2.LINE_AA)
cv2.line(img, (200, 380), (400, 380), (0, 255, 255), 38, cv2.LINE_AA)
cv2.line(img, (400, 380), (300, 450), (0, 255, 255), 38, cv2.LINE_AA)

cv2.imshow('img', img)
cv2.waitKey(0)

运行结果如下:
在这里插入图片描述

4-15 矩形圆形任意多边形绘制

绘制圆形用到的是cv2.circle(),绘制椭圆用到的是cv2.ellipse(),绘制长方形用到的是cv2.rectangle()

cv2.polylines() 可以用来画很多条线。只把想画的线放在一 个列中将列传给函数就可以了。每条线会独立绘制。会比用 cv2.line() 一条一条的绘制快一些。

运行代码如下:

import cv2
import numpy as np

img = cv2.imread('00.jpg', 1)
# rectangle是来画矩形框的,其中:1.src;2.左上角;3.右下角;4.color;5.如果为-1,则fill,如果>0则表示line width
cv2.rectangle(img, (180, 300), (300, 400), (0, 255, 255), -1)

# circle是用来画圆的,其中:1.src;2.center;3.r;4.color,5.同rectangle
cv2.circle(img, (240, 160), 80, (0, 255, 0), 2)

# ellipse是用来画椭圆的,其中:1.src;2.中心坐标;3.长、短轴长度;4.椭圆旋转角度;5.6.椭圆弧起始和终止角度;7.color;8.线宽或填充
cv2.ellipse(img, (410, 130), (100, 70), 80, 0, 360, (0, 0, 255), 3)

# polylines画多边形
points = np.array([[358, 54], [385, 120], [357, 163], [401, 165], [433, 237],
                   [440, 165], [485, 166], [442, 119], [442, 28], [411, 84]],
                  np.int32)  # 这个数组必须为int32
print(points.shape)  # (10, 2)
# 这里reshape的第一个参数为-1,表明这一维度的长度是根据后面的维度计算出来的
points = points.reshape((-1, 1, 2))
print(points.shape)  # (10, 1, 2)
# 1.src;2.point;3.True表示闭合的线,False不闭合;4.color;5.只有线宽,-1报错不会填充
cv2.polylines(img, [points], True, (0, 255, 255), 3)

cv2.imshow('img', img)
cv2.waitKey()

运行结果如下:
在这里插入图片描述

4-16 文字图片绘制

代码如下:

import cv2

img = cv2.imread('00.jpg', 1)
font = cv2.FONT_HERSHEY_SIMPLEX  # 文字的字体类型,FONT_HERSHEY_SIMPLEX表示正常大小无衬线字体
# putText显示文本,其中:1.src;2.text;3.org;4.font;5.text size;6.color;7.line width;8.style
cv2.putText(img, 'I Love You', (300, 350), font, 1, (255, 0, 0), 2, cv2.LINE_AA)
cv2.imshow('img', img)
cv2.waitKey(0)

运行结果如下:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速学完OpenCV+python计算机视觉图像处理(四) 的相关文章

  • Pandas apply 与 np.vectorize 从现有列创建新列的性能

    我正在使用 Pandas 数据框 并希望创建一个新列作为现有列的函数 我还没有看到关于之间速度差异的很好的讨论df apply and np vectorize 所以我想我会在这里问 熊猫apply 功能很慢 根据我的测量 在一些实验中如下
  • Spark MLlib - 训练隐式警告

    我在使用时不断看到这些警告trainImplicit WARN TaskSetManager Stage 246 contains a task of very large size 208 KB The maximum recommend
  • 底图上的子图

    我有一张英国地图和 121 个地点 每个地点有 3 个值 我想绘制 121 个位置中每个位置的三个值的小条形图 目前 这些值绘制为markersize属性 看起来像这样 密集恐惧症情节 https i stack imgur com 5fv
  • 为什么 tkinter / window.update 在我的程序中随着时间的推移变得更慢?

    我发现当我调用 window update 时 当向窗口写入的内容较少时 它的运行速度会更快 但后来 当我向窗口写入更多元素时 window update 需要更长的时间 请参阅下面的我的代码 您可以看到它在更新窗口之前一次向屏幕 100
  • Python 遍历目录树的方法是什么?

    我觉得分配文件和文件夹并执行 item 部分有点黑客 有什么建议么 我正在使用Python 3 2 from os import from os path import def dir contents path contents list
  • 如何在 ReportLab 段落中插入回车符?

    有没有办法在 ReportLab 的段落中插入回车符 我试图将 n 连接到我的段落字符串 但这不起作用 Title Paragraph Title n Page myStyle 我想要这样做 因为我将名称放入单元格中 并且想要控制单元格中的
  • 字典中的列表,Python 中的循环

    我有以下代码 TYPES hotmail type hotmail lookup mixed dkim no signatures S Return Path email protected cdn cgi l email protecti
  • 如何找到列表S的所有分区为k个子集(可以为空)?

    我有一个唯一元素列表 比方说 1 2 我想将其拆分为 k 2 个子列表 现在我想要所有可能的子列表 1 2 1 2 2 1 1 2 我想分成 1 1 2 我怎样才能用 Python 3 做到这一点 更新 我的目标是获取 N 个唯一数字列表的
  • Python 正则表达式部分匹配或“hitEnd”

    我正在编写一个扫描器 因此我将任意字符串与正则表达式规则列表进行匹配 如果我可以模拟 Java hitEnd 功能 不仅知道正则表达式何时不匹配 还知道何时匹配 这将非常有用 can t匹配 当正则表达式匹配器在决定拒绝输入之前到达输入末尾
  • 在Python中创建一个新表

    我正在尝试从数控机床中提取数据 事件每毫秒发生一次 我需要过滤掉一些用管道 分隔的变量分隔符 PuTTy exe 程序生成的日志文件 我尝试阅读熊猫 但列不在同一位置 df pd read table data log sep 日志文件的一
  • 一行Python和SQLite代码,为什么需要加“,”? [复制]

    这个问题在这里已经有答案了 c execute INSERT INTO numbers VALUES random randint 0 100 如果我将上面的代码更改为 c execute INSERT INTO numbers VALUE
  • 如何从 Python 中指定运行程序的输入文件?

    我正在编写一个外部脚本 以通过笔记本电脑上的 Python mrjob 模块 而不是在 Amazon Elastic Compute Cloud 或任何大型集群上 运行 mapreduce 作业 我读自mrjob文档 http packag
  • 杂乱的扭曲连接在不干净的时尚中消失了。没有代理。已经尝试过标题

    我正在尝试抓取这个网站 https www5 apply2jobs com jupitermed ProfExt index cfm fuseaction mExternal searchJobs https www5 apply2jobs
  • 为什么“return self”返回 None ? [复制]

    这个问题在这里已经有答案了 我正在尝试获取链的顶部节点getTopParent 当我打印出来时self name 它确实打印出了父实例的名称 然而 当我回来时self 它返回 None 为什么是这样 class A def init sel
  • numpy.cov() 返回意外的输出

    我有一个 X 数据集 有 9 个特征和 683 行 683x9 我想获取这个 X 数据集和另一个与 X 具有相同形状的数据集的协方差矩阵 我使用np cov originalData generatedData rowvar False 代
  • 如何向 SCons 构建添加预处理和后处理操作?

    我正在尝试在使用 SCons 构建项目时添加预处理和后处理操作 SConstruct 和 SConscript 文件位于项目的顶部 预处理动作 生成代码 通过调用不同的工具 gt 不知道在此预处理之后将生成的确切文件 可以创建用于决定生成哪
  • 在 Python 的 Textmate 中突出显示尾随空格?

    我想做类似的事情this http remysharp com 2008 03 30 trailing white space in textmate Textmate 提示 这样当我在 Python 中编写代码时 尾随空白总是以某种方式突
  • 如何使用Featuretools按列值从单个数据框中的多个列创建特征?

    我正在尝试根据之前的结果来预测足球比赛的结果 我在 Windows 上运行 Python 3 6 并使用 Featuretools 0 4 1 假设我有以下代表结果历史记录的数据框 原始数据框 https i stack imgur com
  • 在Python中从日期时间中减去秒

    我有一个 int 变量 它实际上是秒 让我们调用这个秒数X 我需要得到当前日期和时间 以日期时间格式 减去的结果X秒 Example If X是 65 当前日期是2014 06 03 15 45 00 那么我需要得到结果2014 06 03
  • 在游戏中实现功能

    我在完成这部分作业时遇到了麻烦 我必须宣布游戏的获胜者 然后输入到函数中 输入所有 if 语句后 我必须创建一个函数def playGame 这必须包括 showRules user getUserChoice computer getCo

随机推荐

  • iOS左对齐自动换行collection样式

    前言 想必大家工作中或多或少会遇到下图样式的UI需求吧 像这种cell长度不固定 以此向右对齐排列的样式UI可以说是很常见的 实现方式 一般的实现可能主要是分一下两种 1 一种是用button依次排列实现 动态计算text宽度 记录之前一个
  • Ruby on Rails emoji表情通过json返回

    原因 大概意思是 emoji表情是5位字符 而to json as json最多支持4个字符 导致返回的emoji不完整 客户端就不会识别 导致乱码 解决方法 在config initializers文件夹下新建patches rb 文件
  • 【项目复盘React】react封装动态组件+组件懒加载(hook版)

    使用到的hook useContext 使用到的api lazy React 1 在utils文件夹下新建文件夹testContext 2 新建文件PersonContext js 导出一个Context对象实例 import React
  • 射频原理图设计checklist

    射频原理图设计checklist 持续更新 文章目录 射频原理图设计checklist 1 WiFi GPS测试兼容 2 SAR SENSER 的GPIO控制和电源供电需常开 3 射频收发器与基带芯片之间的IQ连接线需参考平台推荐 4 主集
  • WEB靶场系类搭建

    环境 windwos centos ubuntu DVWA 1 进 phpmyadmin创建dvwa数据库 2 修改配置文件 3 输入127 0 0 1 dvwa 安装 pikachu 1 直接修改配置文件 2 127 0 0 1 pika
  • js实现瀑布流布局

    实现思路是 收集列表元素数组 每列定宽不定高 列表元素全部相对于容器元素绝对定位 根据容器可视宽度计算每行的元素盛放个数 根据盛放个数先处理第一行 依次排列在第一行 处理后续元素 维护一个每列当前高度的数组 对于后续行的元素 依次往当前最低
  • 每日一库之Go 强大而灵活的电子邮件库:email

    发送邮件是一个很常见的需求 用户邮箱验证 邮箱召回等 Go 语言标准库自带 net smtp 库 实现了 smtp 协议 用于发送邮件 然而这个库比较原始 使用不方便 而且官方声明不再增加新功能 于是乎出现了一些强大的第三方邮件库 今天推荐
  • PSD 格式文件除了 PS ,还能用什么软件打开?

    有人问 除了 Photoshop 还有哪些软件能打开 PSD 格式文件呢 当我看到这个问题时 我立刻理解了他的烦恼 因为有段时间 我的电脑里没有安装 Photoshop 但有一次 我的同事发了一个 PSD 文件给我 我却无法联系到他 我急需
  • linux(centos7) 查看剩余磁盘空间大小

    df hl 查看磁盘剩余空间 df h 查看每个根路径的分区大小 du sh 目录名 返回该目录的大小 du sm 文件夹 返回该文件夹总M数 du h 目录名 查看指定文件夹下的所有文件大小 包含子文件夹 查看硬盘的分区 sudo fdi
  • 非方阵点乘算法

    非方阵点乘算法 基于 lt 算法4 gt 中的P12矩阵相乘 方阵 探索非方阵点乘 线代基础 能够点乘的矩阵 一定满足 前行 后列 算法思考 解决矩阵运算问题 切勿凭空想象 应脚踏实地 举个简单例子写在草稿纸上 并观察 各矩阵下标变化规律
  • git clone 失败或速度慢

    总之就是加代理yyds 具体做法 在github网址前面加上前缀 https ghproxy com 即可 git clone https ghproxy com https github com xxx git
  • Python—爬取小说案例(bs4方法)

    一 源码 import requests from bs4 import BeautifulSoup UA伪装 headers User Agent Mozilla 5 0 Windows NT 10 0 Win64 x64 AppleWe
  • mosquitto安装mysql插件 进行权限认证

    简介 因工作中需要对接物联网设备 设备数据的上传和下发都需要不同的连接账号作为topic 因此采用mqtt mysql的方式 动态的维护mqtt的账号 目录 简介 一 安装依赖 二 下载压缩包 三 安装mosquitto 四 安装mosqu
  • 关于VTK9 vs2019编译QVTK 过程中的记录

    环境 vtk9 0 QT5 12 PCL 1 12 vs2019 x64 这段时间下载了VTK 9 0 并利用vs2019对QVTK进行了编译 1 只要在编译过程中勾选了QT相关选项 就一定可以生成QVTK相关的头文件和库 编译过程网上已经
  • [屏驱相关]【SWDM-QFP100-34SVEA3测评】+LVGL驱屏检测

    这段时间参考华芯微特官方提供的SDK资源包 链接 SWM341资源 百度云盘分享 密码 byv2 验证了部分基础外设的工程示例 此次参考官方提供的LVGL工程示例 先将 基于LVGL纯净版 目录下的 SWM341 lvgl8 3 3 221
  • uni-app开发5+app,图片无法在真机上面显示。

    uni app开发5 app 图片无法在真机上面显示 总结 标签使用错误 请不要使用img标签 img
  • 备用内存 释放_如何释放为硬件保留的内存(内详!!!)

    分割线 网友 240034315yue 补充的几点 以下的操作可能有风险 请酌情考虑 如果找我上面说的那么做还不行的话大家可以看看 注明一 1 如果单通道的话 内存条为一根 通电情况下直接拔掉 在装上 然后开机 在按照楼主说的msconfi
  • 双因素方差分析_科研常用显著性分析方法汇总及选择(T检验,Mann-Whitney U test检验,方差分析等)...

    科研常见的差异性分析方法汇总 根据数据是否符合正态分布 分为 参数检验 非参数检验 非参数检验是在总体方差未知或知道甚少的情况下 利用样本数据对总体分布形态等进行推断的方法 由于非参数检验方法在推断过程中不涉及有关总体分布的参数 因而得名为
  • ubuntu查看搜索可安装包名

    比如要安装openjdk 但是不知道安装包名 可用有以下方法搜索 用aptitude search openjdk
  • 快速学完OpenCV+python计算机视觉图像处理(四)

    返回主目录 4 图像基本特效 4 1 图像特效介绍 图像特效分为以下几个 分别是 灰度处理 底板效果 马赛克 毛玻璃效果 图像融合 图片蓝色 边缘检测 浮雕效果 4 2 图像灰度处理1 灰度处理常用方法 方法1 直接使用imread里面的参