其他分享
首页 > 其他分享> > opencv02

opencv02

作者:互联网

'''
#上帝视角
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
'''

标签:opencv02,img,imshow,cv2,imread,轮廓,cv
来源: https://blog.csdn.net/qq_46519070/article/details/121311366