Opencv基础操作(涉及提取三原色,裁剪图片,画线,滤波器,提取转角,图像匹配,梯度图,摄像机提取)

本文介绍了使用Python的OpenCV库进行图像读取、尺寸显示、颜色通道分离、裁剪、绘制几何形状、滤波、特征点检测、模板匹配、边缘检测、腐蚀膨胀以及实时从摄像头捕获图像的基本操作。
摘要由CSDN通过智能技术生成
import cv2
import numpy as np
image=cv2.imread("D:\\opencv_logo.jpg")#读取图片
print(image.shape)#展示图片大小
cv2.imshow("Image",image)#展示图片
cv2.waitKey()#图片停止消失

#提取三原色
cv2.imshow("blue",image[:,:,0])
cv2.imshow("green",image[:,:,1])
cv2.imshow("red",image[:,:,2])
cv2.waitKey()#图片停止消失

#裁剪图片
crop=image[10:170,40:200]#宽为10到170,长为40到200
cv2.imshow("crop",crop)
cv2.waitKey()#图片停止消失

#画线
image=np.zeros([300,300,3],dtype=np.uint8)#创建黑色画布
cv2.line(image,(100,200),(250,250),(250,0,0),2)#画线
cv2.rectangle(image,(30,100),(60,150),(250,0,0),2)#画矩形
cv2.imshow("Image",image)#展示图片
cv2.waitKey()#图片停止消失

#滤波器
images=cv2.imread("D:\\plane.jpg")#读取图片
gauss=cv2.GaussianBlur(images,(5,5),0)#滤波
cv2.imshow("Image",images)#展示图片
cv2.imshow("gauss",gauss)#展示图片
cv2.waitKey()#图片停止消失

#提取转角
image=cv2.imread("D:\\opencv_logo.jpg")#读取图片
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#转换为灰度图
corner=cv2.goodFeaturesToTrack(gray,500,0.1,10)#提取特征点
#标记每一个点
for corners in corner:
    x, y=corners.ravel()
    cv2.circle(image,(int(x),int(y)),3,(255,0,0),-1)

cv2.imshow("Image",image)#展示图片
cv2.waitKey()#图片停止消失

#匹配
image=cv2.imread("D:\\poker.jpg")#读取图片
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#转换为灰度图
template=gray[75:105,235:265]#截取图片
match=cv2.matchTemplate(gray,template,cv2.TM_CCOEFF_NORMED)#对比图片
location=np.where(match>=0.9)#对比度
w,h=template.shape[0:2]
for p in zip(*location[::-1]):
    x1,y1=p[0],p[1]
    x2,y2=x1+w,y1+h
    cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imshow("Image",image)#展示图片
cv2.waitKey()#图片停止消失

#梯度图
gray=cv2.imread("D:\\opencv_logo.jpg",cv2.IMREAD_GRAYSCALE)#转换为灰度图
laplacian=cv2.Laplacian(gray,cv2.CV_64F)
caney=cv2.Canny(gray,100,200)#卡密算法
cv2.imshow("Gray",gray)#展示图片
cv2.imshow("Laplacian",laplacian)#展示图片
cv2.imshow("Caney",caney)#展示图片
cv2.waitKey()#图片停止消失

#腐蚀和膨胀
gray=cv2.imread("D:\\opencv_logo.jpg",cv2.IMREAD_GRAYSCALE)#转换为灰度图
_,binary=cv2.threshold(gray,200,255,cv2.THRESH_BINARY_INV)
kernel=np.ones((5,5),np.uint8)
erosion=cv2.erode(binary,kernel)
dilation=cv2.dilate(binary,kernel)
cv2.imshow("binary",binary)
cv2.imshow("erosion",erosion)
cv2.imshow("dilation",dilation)
cv2.waitKey()#图片停止消失

#提取摄像机图像
capture=cv2.VideoCapture(0)#获取摄像机
image=cv2.imread("D:\\opencv_logo.jpg")#读取图片
while True:
    ret,frame=capture.read()#获取摄像机图像
    cv2.imshow("Camera",frame)#展示摄像机图像
    #按任意键退出
    key=cv2.waitKey(1)
    if key!=-1:
        break
capture.release()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值