使用python-openCV对摄像头捕捉的镜头进行二值化并打上文字

  1. 用CaptureFromCAM函数对图像进行提取: capture = cv.CaptureFromCAM(0) 读取直接的视频文件只需将语句改变为: capture = cv.VideoCapture('videoname.avi')

  2. 对每一帧图像进行读取: while True:

    img = cv.QueryFrame(capture)

    #如果按下 esc 键则终止程序退出 if cv.WaitKey(10) == 27:

    break

  3. 在循环中对读取的每一帧图像进行二值化处理:

    def binaryThreshold(Image, threshold):
    grey = cv.CreateImage(cv.GetSize(img),cv.IPL_DEPTH_8U, 1) out = cv.CreateImage(cv.GetSize(img),cv.IPL_DEPTH_8U, 1)

    cv.CvtColor(Image,grey,cv.CV_BGR2GRAY)
    cv.Threshold(grey, out , threshold , 255 ,cv.CV_THRESH_BINARY)

    return out
    其中,CreateImage 函数表示按原帧大小创建 256 值 1 通道的灰度图像, CvtColor 函数将传入的图像从 RGB 图像转换成灰度图,写入 grey 图像。 Threshold函数按程序开始时threshold = input("threshold=")语句获取的用 户输入的的阈值将图像进行二值化写入 out 图像。将 out 图像作为函数返回 值传入主函数。

  4. 在每一帧图像上覆盖“3100102592 menglixia”的文字:
    (width, height) = cv.GetSize(img)
    text_font = cv.InitFont(cv.CV_FONT_HERSHEY_DUPLEX, 2, 2) cv.PutText(img, "3100102592 menglixia", (50, height / 2), text_font, cv.RGB(255, 0, 0))

获取图像高度和宽度,并初始化文字字体,在 1/2 高度处写入“3100102592 menglixia”的字符串,以颜色红色(在二值化后的图像中显示为 黑色)

       5. 显示每一帧图像:

            cv.ShowImage("camera",img) 

#coding=utf-8
import cv2.cv as cv

def binaryThreshold(Image, threshold):
    grey = cv.CreateImage(cv.GetSize(img),cv.IPL_DEPTH_8U, 1)
    out = cv.CreateImage(cv.GetSize(img),cv.IPL_DEPTH_8U, 1)
 
    cv.CvtColor(Image,grey,cv.CV_BGR2GRAY)
    cv.Threshold(grey, out ,threshold , 255 ,cv.CV_THRESH_BINARY)

    return out

if __name__ == '__main__':

    #threshold = input("threshold=")
    cv.NamedWindow("camera",1)
    capture = cv.CaptureFromCAM(0)  

    
    while True:
        """ capture image from camera """
        img = cv.QueryFrame(capture)

        """ convert color image to grey """
        #img = binaryThreshold(img, threshold)

        """ Get the width and height of the image """
        (width, height) = cv.GetSize(img)

        """ put text id and name in image """        
        text_font = cv.InitFont(cv.CV_FONT_HERSHEY_DUPLEX, 2, 2)
        cv.PutText(img, "3100102592 menglixia", (50, height / 2), text_font, cv.RGB(255, 255, 0))

        """ show each frame """
        cv.ShowImage("camera",img)

        """ press esc to quit the script """
        if cv.WaitKey(10) == 27:
            break

    del(capture)
    cv.DestroyWindow("camera")

 

转载于:https://www.cnblogs.com/sparkmorry/p/3481079.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值