a.把图片进行上下颠倒
import cv2
import numpy as np
if __name__ == '__main__':
secen = cv2.imread("th.jfif")
# 三位图片(高度,宽度,像素红绿蓝)
# [::-1,:,:]把图片进行上下颠倒
cv2.imshow("roase", secen[::-1, :, :])
cv2.waitKey()
cv2.destroyAllWindows()
添加图片注释,不超过 140 字(可选)
b.颠倒RGB像素顺序(变成BGR将大红变成大紫)
import cv2
import numpy as np
if __name__ == '__main__':
secen = cv2.imread("th.jfif")
# 三位图片(高度,宽度,像素红绿蓝)
# [::-1,:,:]把图片进行上下颠倒
cv2.imshow("roase", secen[:, :, ::-1])
cv2.waitKey()
cv2.destroyAllWindows()
c.将RGB变成RBG
import cv2
import numpy as np
if __name__ == '__main__':
secen = cv2.imread("th.jfif")
# 三位图片(高度,宽度,像素红绿蓝)
# [::-1,:,:]把图片进行上下颠倒
print(secen)
cv2.imshow("roase", secen[:, :, [0, 2, 1]])
cv2.waitKey()
cv2.destroyAllWindows()
d.计算机视觉中一切图片都是数(三维数组)改变图片的尺寸
import cv2
import numpy as np
if __name__ == '__main__':
secen = cv2.imread("th.jfif")
secen2 = cv2.resize(secen, (300, 300))
cv2.imshow("scen2", secen2)
cv2.waitKey()
cv2.destroyAllWindows()
e.将彩色图片变成黑白图片(灰度化处理)
import cv2
import numpy as np
if __name__ == '__main__':
secen = cv2.imread("th.jfif")
secen2 = cv2.resize(secen, (300, 300))
gray = cv2.cvtColor(secen, code=cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)
cv2.waitKey()
cv2.destroyAllWindows()
添加图片注释,不超过 140 字(可选)
转化成HSV
import cv2
import numpy as np
if __name__ == '__main__':
secen = cv2.imread("th.jfif")
secen2 = cv2.resize(secen, (300, 300))
gray = cv2.cvtColor(secen, code=cv2.COLOR_BGR2GRAY)
#把BGR转化为HSV
HSV=cv2.cvtColor(secen,code=cv2.COLOR_BGR2HSV)
cv2.imshow("HSV", HSV)
cv2.waitKey()
cv2.destroyAllWindows()
.
添加图片注释,不超过 140 字(可选)
f.H(色度)S(饱和度)V(亮度)
RGB多用于显示系统,但是图像处理一般使用HSV,他更加贴近人眼对于颜色的感知方式。
标记处图片中的蓝色
import cv2
import numpy as np
if __name__ == '__main__':
img1 = cv2.imread("af055a9b7448d5139733ad7c3beb6b4.png")
img2 = cv2.cvtColor(img1, code=cv2.COLOR_BGR2HSV)
# 定义在HSV的空间中蓝色的范围
lower_blue = np.array([110, 50, 50])
up_blue = np.array([130, 255, 255])
# 取得蓝色的范围,用来标记图片中的蓝色
mask = cv2.inRange(img2, lower_blue, up_blue)
rst = cv2.bitwise_and(img1, img1, mask=mask)
print(mask)
cv2.imshow("mask", mask)
cv2.imshow("img2", img2)
cv2.imshow("ret", rst)
cv2.waitKey()
cv2.destroyAllWindows()
g.将黑色背景板变为白色
for i in range(rst.shape[0]): # 图片的宽
for j in range(rst.shape[1]): # 图片的高
if (rst[i, j] == 0).all():#都是0才是纯黑色
rst[i, j] = 255
h.它们分别代表三角形的三条边长,判断这三条边是否能组成一个三角形,当判断为是时,你应该使用print语句输出Is a triangle,当判断为否时,则使用print语句输出Not a triangle
a = int(input())
b = int(input())
c = int(input())
if a+b>c and a+c>b and b+c>a:
print("Is a triangle")
else:
print("Not a triangle")
i.while 循环
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,从而处理需要重复处理的相同任务,直到不满足给定条件时,才会结束循环
中获取一个正整数n,并输出区间[1,n]内所有数的和
n=int(input())
s=0
for i in range(1,n+1):
s+=i
print(s)
j.打印九九乘法表(Python 版)
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}*{i}={j*i}",end=" " if j<i else '\n')
continue
语法
循环控制语句改变执行的正常顺序。当执行离开一个作用域时,在该作用域中创建的所有自动对象将被销毁。
Python 支持 continue 控制语句:它将控制返回到循环的开始,或者说是可以结束某一次的循环直接跳到执行下一次的循环。
break
语法
Python break 语句,就像在C语言中,打破了最小封闭 for 或 while 循环。
break 语句用来终止循环语句,即循环条件没有 False 条件或者序列还没被完全递归完,也会停止执行循环语句。
break 语句用在 while 和 for 循环中。如果您使用嵌套循环,break 语句将停止执行最深层的循环,并开始执行下一行代码。
k.
import cv2
img1 = cv2.imread("th.jfif")
cv2.imshow("img1", img1)
print(cv2.__version__)
# 灰度化,图像的像素,图像坐标系向左为X,向下为Y,
# 分辨率:每个单位尺寸中,像素点的密度大小
# 灰度化主要的应用:OCR文本识别
img2 = cv2.cvtColor(img1, code=cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", img2)
cv2.waitKey()
cv2.destroyAllWindows()
l.灰度化python版本
import cv2
import numpy as np
img1 = cv2.imread("th.jfif", 1)
imgInfo = img1.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height, width, 3), dtype=np.uint8)
for i in range(0, height):
for j in range(0, width):
(b, g, r) = img1[i, j]
# 变成整形的目的是为了防止溢出
gray = (int(b) + int(g) + int(r)) / 3
dst[i, j] = np.uint8(gray)
cv2.imshow("dst", dst)
cv2.waitKey()
cv2.destroyAllWindows()
m.图片马赛克
import cv2
import numpy as np
if __name__ == '__main__':
img1 = cv2.imread("th.jfif")
cv2.imshow("img1", img1)
img2 = cv2.resize(img1, (25, 32))
img3 = np.repeat(img2, 10, axis=0)
img4 = np.repeat(img3, 10, axis=1)
cv2.imshow("img4", img4)
print(img1.shape)
cv2.waitKey()
cv2.destroyAllWindows()
.把细节放大十倍,丢失细节信息。
添加图片注释,不超过 140 字(可选)
repeat方式:重复方式把二维数据变成一维的,所以需要设定X(axis=0)和Y(axis=1)让他恢复到二维数组。
先把他缩小在放大,以达到马赛克的目的。
import cv2
import numpy as np
if __name__ == '__main__':
img1 = cv2.imread("th.jfif")
cv2.imshow("img1", img1)
img2 = cv2.resize(img1, (25, 32))
img3 = img2[::10, ::10] # 每10个像素取一个
cv2.namedWindow("img3", flags=cv2.WINDOW_NORMAL)
cv2.resize("img3", 350, 232)
cv2.imshow("img3", img3)
print(img1.shape)
cv2.waitKey()
cv2.destroyAllWindows()
.另一种马赛克方式
import cv2
import numpy as np
if __name__ == '__main__':
img1 = cv2.imread("50e5-iuvaazn5577948.jpg")
img2 = cv2.resize(img1, (550, 500))
face = img2[42:225, 139:400]
face = face[::10, ::10]
face = np.repeat(face, 10, axis=0)
face = np.repeat(face, 10, axis=1)
img2[42:225, 139:400] = face[:183, :261]
cv2.imshow("face", face)
cv2.waitKey()
cv2.destroyAllWindows()

编辑
添加图片注释,不超过 140 字(可选)
以上都进行了进行了人为的定位,然后对图像进行了切片,最后进行有间隔的切片。
N.找到物体轮廓
根据颜色的差异来找到轮廓
import cv2
import numpy as np
if __name__ == '__main__':
img = cv2.imread("12122643_184439305000_2.jpg")
img1 = cv2.cvtColor(img, code=cv2.COLOR_BGR2HSV) # 颜色空间,适用于计算
lower_up = (156, 50, 50)
up_red = (180, 255, 255)
mask = cv2.inRange(img1, lowerb=lower_up, upperb=up_red)
rst = cv2.bitwise_and(img1, img1, mask=mask)
cv2.imshow("flower", rst)
cv2.waitKey()
cv2.destroyAllWindows()

编辑切换为居中
添加图片注释,不超过 140 字(可选)
o.输入正整数n,求1到n的交错和:即-1+2-3+4-5+6-7+...+((-1)^n)*n
sum=0
for i in range(1,n+1):
if i%2==1:
sum+=-i
else:
sum+=i
print(sum)
p.输入正整数n,请你输出第一个平方大于n的整数。
for i in range(0,n):
if i**2>n:
print(i)
break
elif n==1:
print(2)
break
q.for 循环 - range step 语法
range 还支持循环的步长 step,做到类似 for(i=0; i<n; i+=step) 的效果比如要输出 0 到 n-1 范围内的所有偶数,我们可以写 range(0, n, 2)
l.for 循环 - enumerate 函数
在 Python,我们也可以使用 enumerate 来迭代序列中的元素的索引和元素值。
list = ["students", "for", "apples"]
for index, element in enumerate(list):
print(index, element)
s.值为下标的倍数的元素个数
res=0
for i,v in enumerate(arr):
if i==0 and v==0:
rse+=1
elif i!=0 and v%i==0:
res+=1
print(res)
t.输入一个正整数n,输出元素值不超过n的三元组中,能组成三角形的三条边边长的元组个数。
首先需要有一个变量count来记录能组成三角形三元组的个数。
其次构造三元组的全排列,依次判断该三元组是否能够组成三角形,如果能够组成,就令count+1。
最后输出count的值
count=0
for i in range(1,n+1):
for j in range(1,n+1):
for k in range(1,n+1):
if i+j>k and i+k>j and j+k>i:
count+=1
print(count)