OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 554|回复: 8

图片的长和宽获取以及数据的使用

[复制链接]
发表于 2019-4-8 20:02:29 | 显示全部楼层 |阅读模式
各位大神:
    cv.rectangle(frame,(x_face,y_face),(x_face+width_face,y_face+height_face),(255,0,0),2)
    cv.imwrite("D:\\Python\\special_effect\\rec.jpg",frame)
    roi = frame[x_face:x_face+width_face,y_face:y_face+height_face]
    cv.imwrite("D:\\Python\\special_effect\\roi.jpg",roi)
上面代码画出的矩形框位置和大小,为什么和roi的位置和大小不太一样?
另外在使用h,w=src.shape[:2]获取图像的长和高后,什么时候使用w,什么时候使用h ?被这两个值整晕了
非常感谢!!!
回复

使用道具 举报

 楼主| 发表于 2019-4-8 20:10:32 | 显示全部楼层
我这边想实现的是:通过video识别到人脸以后,然后将一张戴帽子的特效加载到video当中,代码如下,但诸多问题存在,还麻烦路过的大神帮忙实现一下,谢谢!!
def special_effect_deal():
    video = cv.VideoCapture(0)
    effImg=cv.imread("D:\\Python\Pictures\\Special_pictures\\effect9.png")
    face_detector = cv.CascadeClassifier("D:\\Python\\cascadeClassifier\\haar\\haarcascade_frontalface_alt2.xml")

    effRows,effCols = effImg.shape[:2]
    ret,frame = video.read()
    gray_frame = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
    face = face_detector.detectMultiScale(gray_frame,1.1,3,minSize=(100,100),maxSize=(400,400))
    while face is None:
        face = face_detector.detectMultiScale(gray_frame,1.1,3,minSize=(100,100),maxSize=(400,400))

    x_face = face[0][0]
    y_face = face[0][1]
    width_face = face[0][2]
    height_face = face[0][3]

    track_window=(x_face,y_face,x_face+width_face,y_face+height_face)
    cv.rectangle(frame,(x_face,y_face),(x_face+width_face,y_face+height_face),(255,0,0),2)
    cv.imwrite("D:\\Python\\special_effect\\rec.jpg",frame)
    roi = frame[x_face:x_face+width_face,y_face:y_face+height_face]
    cv.imwrite("D:\\Python\\special_effect\\roi.jpg",roi)

    hsv_roi = cv.cvtColor(roi,cv.COLOR_BGR2HSV)
    mask = cv.inRange(hsv_roi,(0.,60.,32.),(180.,255.,255.))
    roi_hist = cv.calcHist([hsv_roi],[0],None,[180],[0,180])
    cv.normalize(roi_hist,roi_hist,0,255,cv.NORM_MINMAX)
    term_crit = (cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT,10,1)

    while(True):
        ret,frame=video.read()
        if ret == True:
            hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
            dst = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)
            ret,track_window = cv.CamShift(dst,track_window,term_crit)

            cv.imshow("before resoize,effImg",effImg)
            x ,y, w,h =track_window
            print("size of track window",track_window)

            effImg = cv.resize(effImg,(w,h//3))
            print("resized,effImg.shape",effImg.shape)
            cv.imshow("resized,effImg",effImg)
            rows,cols=effImg.shape[:2]
            img2 = cv.rectangle(frame,(x,y),(x+cols, y+rows),(0,0,255),1)

            print("rows:%d,cols:%d"%(rows,cols))
            roi = img2[x:x+rows,y:y+cols]

            effGray = cv.cvtColor(effImg,cv.COLOR_BGR2GRAY)
            ret,mask = cv.threshold(effGray,175,255,cv.THRESH_BINARY)
            print("size of roi",roi.shape)
            print("size of mask",mask.shape)
            mask_inv = cv.bitwise_not(mask)

            img2_bg = cv.bitwise_and(roi,roi,mask=mask)
            eff_fg = cv.bitwise_and(effImg,effImg,mask=mask_inv)
            dst = cv.add(img2_bg,eff_fg)
            img2[x:x+rows,y:y+cols]=dst
            cv.imshow("img2",img2)
            k = cv.waitKey(10)&0xff
            if k == 27:
                break
        else:
            break
回复 支持 反对

使用道具 举报

发表于 2019-4-9 22:55:59 | 显示全部楼层
这个视频加帽子、眼镜的,在pyimagesearch上有做好的,也是python的,最好去参考那个。
自己找一下。
回复 支持 反对

使用道具 举报

发表于 2019-4-9 22:58:52 | 显示全部楼层
这个视频加帽子、眼镜的,在pyimagesearch上有做好的,也是python的,最好去参考那个。
自己找一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-10 10:45:24 | 显示全部楼层
好的,非常感谢!!!
回复 支持 反对

使用道具 举报

发表于 2019-4-11 08:00:19 | 显示全部楼层
跑一下,看哪里有问题
回复 支持 反对

使用道具 举报

发表于 2019-4-19 19:34:33 | 显示全部楼层
第一个问题我的理解是这样的,首先使用*.shape[:2],是由shape[0],和shape[1]组成的,分别对应的是高和宽,对应的是y,和x,另外就是用矩阵来表示的,其实是一个道理。接下来的第二个我也在学习中
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-22 12:30:13 | 显示全部楼层
jsxyheu2014 发表于 2019-4-9 22:58
这个视频加帽子、眼镜的,在pyimagesearch上有做好的,也是python的,最好去参考那个。
自己找一下。 ...

这个功能,在pyimagesearch上真没找的,
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-5-27 09:39 , Processed in 0.028890 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表