Opencv 图像处理

cmd.exe  安装命令行

》pip install opencv-python

》pip install tensorflow  

》pip install keras      必须安装tensorflow基础之上

 

板块一、

     几何图形(cv2 图像处理)

 

图片导入;
图片长宽通道数学;
图片裁剪;
图片输出;
图片保存文件;

tu = cv2.imread('image.jpg')
(h,w,t)=tu.shape
print(tu.shape)
cX,cY = (w//2,h//2)
print(cX)
tl = tu[0:cY,0:cX]
tr = tu[0:cY,cX:w]
bl = tu[cY:h,0:cX]
br = tu[cY:h,cX:w]
def zzImage(zhou):
    plt.imshow(zhou)
    plt.axis('off')
    plt.show()
zzImage(br)
#   裁剪顺序  先y,再x

cv2.imwrite('newImage.jpg',image)

 封装常用函数 代码块(.py文件)

包含图片旋转代码

 
import cv2
import matplotlib.pyplot as plt
import numpy as np

#读取图片
def imgRead(src):
   src = cv2.imread(src)
   return cv2.cvtColor(src,cv2.COLOR_BGR2RGB)
#显示图片
def imgShow(img):
    plt.imshow(img)
    plt.axis('off')
    plt.show()
def imgWrite(Img):
    return cv2.imwrite('newImage.jpg',Img)



img = imgRead('face.png')
imgShow(img)
#imgWrite(img)

#看图片的信息 
(h,w,t)=img.shape  
print(img.shape)
#得出图片的中心点
cX,cY=(w//2,h//2)
#写一个 动作 ,旋转动作   (旋转中心点,旋转角度,缩放的倍数)
Action = cv2.getRotationMatrix2D((cX,cY),90,1.0)
#外容器执行旋转动作  存储图片
img = cv2.warpAffine(img,Action,(w,h))
imgShow(img)
View Code

 使用引入格式: from 文件名 import *

设置图片大小+等比例算法: imgW = 80
imgH = int(img.shape[0]*imgW/img.shape[1])
img= cv2.resize(img,(imgW,imgH))
show(img)
print(img.shape)

人脸检测方法初学:

#定义人脸检测方法
def check(image):
    detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  #写入这个 简单的xml文件
    rects = detector.detectMultiScale(image,scaleFactor=1.1,minNeighbors=3,minSize=(10,10),flags=cv2.CASCADE_SCALE_IMAGE)
    for (x,y,w,h) in rects:
          cv2.rectangle(image, (x,y), (x+w,y+h), (0,255,0), 2)
img = imread('Solvay.jpg')       
check(img)
show(img)

 

板块二、

     一、画图

导包 import numpy as np
import cv2
import matplotlib.pyplot as plt
显示函数 def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()
创建一个 300 300 画布 image = np.zeros((300,300,3),dtype='uint8')
画线 green = (0,255,0)
cv2.line(image, (0,0), (300,300), green)
正方形 -1 为填充 cv2.rectangle(wrap,(3,3),(296,296),(120,120,120),5)
(cX,cY) = wrap.shape[1]//2,wrap.shape[0]//2
for i in range(0,140,15):
    cv2.circle(wrap,(cX,cY),i,green,2)
cv2.circle(wrap,(cX,cY),15,(255,0,0),-1)
show(wrap)

 content = np.zeros((300,300,3),dtype='uint8')
for z in range(15):
   #随机的半径
    Rban = np.random.randint(0,150)
    #随机的圆心
    Rxin = tuple(np.random.randint(0,300,size=(2)))
    #随机的颜色
    Rcolor = np.random.randint(0,255,size=(3)).tolist()
    cv2.circle(content,Rxin,Rban,Rcolor,-1)
show(content)

 

 二、翻转

导包不说了 cv2  matplotlib.pyplot

水平翻转  1

垂直翻转  0

水平+垂直 -1

cv2.finp(image,1)

 三、裁剪

  裁剪就是:把图片的某一块坐标数值,存起来显示   

       avater = image[0:0,200,200]   打印输出

 四、图像算术

   

加像素 add = np.ones(wrap.shape,dtype='uint8')*100
coo = cv2.add(wrap,add)
show(coo)
减像素 shan = np.ones(wrap.shape,dtype='uint8')*205
cww = cv2.subtract(wrap,shan)
show(cww)
 

 五、按位计算

与 1&1=1,1&0=0,0&1=0,0&0=0 and = cv2.bitwise_and(box1,box2)
或1|1=1,1|0=1,0|1=1,0|0=0 or = cv2.bitwise_or(box1,box2)  
异或1^1=0,1^0=1,0^1=1,0^0=0 xor = cv2.bitwise_xor(b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值