opencv02

这段博客涵盖了计算机视觉中的多个关键概念,包括图像变换、显著性检测、轮廓检测和模式匹配。作者展示了如何使用OpenCV库进行透视变换、图像拼接、颜色空间转换以及轮廓检测,并提供了模式匹配的简单实现。此外,还涉及了图像的阈值处理和轮廓查找,以及使用matchTemplate函数进行模板匹配。
摘要由CSDN通过智能技术生成
'''
#上帝视角
img=cv2.imread('opencv/strack/hh.jpg')
img=cv2.resize(img,(200,400))
w,h=100,200
k1=np.float32([[80,70],[80,159],[150,70],[150,150]])#原图像的某区域
k2=np.float32([[0,0],[0,w],[h,0],[h,w]])
img1=cv2.getPerspectiveTransform(k1,k2)
img=cv2.warpPerspective(img,img1,(w,h))
cv2.imshow('img',img)
cv2.waitKey(0)
'''
'''
#统一窗口
img=cv2.imread('h.png')
xs=np.hstack((img,img))#水平堆栈
ys=np.vstack((img,img))
cv2.imshow('hstack',xs)
cv2.imshow('vstack',ys)
cv2.waitKey(0)
'''
'''
#显著性检测(只是一小部分代码)
img=cv2.imread('lena.jpg')
imghsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow('HSV',imghsv)
cv2.waitKey(0)
'''
# 轮廓检测(边,角)
'''
img=cv2.imread('tx.png')
img=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
img=cv2.GaussianBlur(img,(7,7),1)
Canny=cv2.Canny(img,50,50)
# s,img=cv2.threshold(img,)
# s,img=cv2.findContours()
img = cv2.imread('tx.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)#阈值
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)#求轮廓
'''
# 第一个参数是寻找轮廓的图像
# 第二个参数表示轮廓的检索模式,有四种
#     cv2.RETR_EXTERNAL表示只检测外轮廓
#     cv2.RETR_LIST检测的轮廓不建立等级关系
#     cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
#     cv2.RETR_TREE建立一个等级树结构的轮廓。
# 第三个参数method为轮廓的近似办法
#     cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
#     cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
#     cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法
# a=cv2.contourArea()#求面积
# leng=cv2.arcLength()#求长度
'''
cv2.drawContours(img, contours, -1, (0, 0, 255), 1)#画轮廓
cv2.imshow('img',img)
cv2.waitKey(0)
'''
'''
#模式匹配
def matchtemplate(src,tpl):
    # src = cv.imread("lena.jpg")
    # tpl = cv.imread("f.png")
    # cv.imshow("input", src)
    # cv.imshow("tpl", tpl)
    th, tw = tpl.shape[:2]
    result = cv.matchTemplate(src, tpl, cv.TM_CCORR_NORMED)
    # cv.imshow("result", result)
    minv, maxv, min_loc, max_loc = cv.minMaxLoc(result)
    cv.rectangle(src, max_loc, (max_loc[0] + tw, max_loc[1] + th), (0, 0, 255), 2, 8, 0)
    return src
# cap=cv.VideoCapture(0)
tal=cv.imread('face.png')
i=cv.imread('fa.png')
im=matchtemplate(i,tal)
cv.imshow('',im)
cv.waitKey(0)
# cap.set(3, 800)  # 长
# cap.set(4, 800)  # 宽
# cap.set(10, 100)  # 亮度
# while True:
#     open,imgi=cap.read()
#     im=matchtemplate(imgi,tal)
#     cv.imshow('',im)
#     if cv.waitKey(10) & 0xFF ==27:
#         break
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值