OpenCV-python 常见用法 · 个人总结

今天给自己总结一下 python openCV 的一些常见用法。

包括

    1. 显示原图

    2. 显示灰度图

    3. GRB通道分离

    4. 坐标旋转

    5. 重定义大小

    6. 图像裁剪

    7. 亮度增强

    8. 直方图均衡

    9. 滤波

    10. 边缘检测

    11. 角点检测

#coding: utf-8
import cv2
import numpy as np

#原图显示
im = cv2.imread("star.jpg")
cv2.imshow("pic.jpg", im)
cv2.waitKey(0)

#灰度值显示
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray.jpg", gray)
cv2.waitKey(0)

#BGR通道分离
(B, G, R) = cv2.split(im)
cv2.imshow("Red", R)
cv2.imshow("Green", G)
cv2.imshow("Blue", B)
cv2.waitKey(0)

#坐标旋转
rows, cols, channel = im.shape
M = cv2.getRotationMatrix2D(((cols-1)/2.0, (rows-1)/2.0), 90, 1)
dst = cv2.warpAffine(im, M, (cols, rows))
cv2.imshow("dst", dst)
dst = cv2.flip(im, 1)   #水平翻转
dst = cv2.flip(im, 0)   #垂直翻转
dst = cv2.flip(im, -1)  #水平垂直翻转
cv2.waitKey(0)

#resize
res = cv2.resize(im, None, fx=2, fy=0.5, interpolation = cv2.INTER_CUBIC)
cv2.imshow("res", res)
cv2.waitKey(0)

#图像裁剪
im1 = im[200:500, 300:600]  #(y0:y1, x0:x1)
cv2.imshow("im1", im1)
cv2.waitKey(0)

#亮度增强
res1 = np.uint8(np.clip(1.5*im,0,255))
res2 = np.uint8(np.clip(0.7*im,0,255))
tmp1 = np.hstack((im, res1, res2))
cv2.imshow("image", tmp1)
cv2.waitKey(0)

#暂时跳过饱和度、对比度、锐度增强
#直方图均衡
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
equalize = cv2.equalizeHist(gray)
cv2.imshow('equalize', equalize)
cv2.waitKey(0)

#滤波
blur = cv2.blur(im, (5,5))                      #均值平滑滤波
gauss = cv2.GaussianBlur(im, (5,5), 0)          #高斯滤波
median = cv2.medianBlur(im, 5)                  #中值滤波
bilateral = cv2.bilateralFilter(im, 9, 5, 5)    #双边滤波
filt = np.hstack([blur, gauss, median, bilateral])
cv2.imshow("filter", filt)
cv2.waitKey(0)

#边缘检测
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
con = cv2.drawContours(im,contours,-1,(0,0,255),3)
cv2.imshow("con", con)
cv2.waitKey(0)

#角点检测
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
dst = cv2.cornerHarris(gray,5,5,0.04)
dst = cv2.dilate(dst,None)#图像膨胀
im[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',im)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值