用Python实现将手机摄像头画面(彩色或黑白)传到电脑端并且显示

一、实现此功能所必备的手机软件:IP摄像头

在这里插入图片描述

二、通过局域网,用python实现将手机摄像头的画面传到电脑端并且显示:

1、去‘设置‘那里将用户名和密码清除掉
在这里插入图片描述
在这里插入图片描述
2、打开IP摄像头服务器,复制局域网并搜索:
在这里插入图片描述
然后你就可以用将手机摄像头彩色画面传到电脑端并且显示啦
在这里插入图片描述
是不是突然感觉很简单,有没有觉得很神奇,哈哈,是不是突然有了成就感,不过。。。。。。
你发现了没,咱们没用代码!!!

这只是一个幌子嘻嘻

3、那咱们下面来用代码实现啦:

import cv2 
import time
 
if __name__ == '__main__':
 
    cv2.namedWindow("camera",1)
    #开启ip摄像头
    video="http://192.168.43.1:8081/"   #此处@后的ipv4 地址需要修改为自己的地址
    capture =cv2.VideoCapture(video)
 
    num = 0;
    while True:
        success,img = capture.read()
        cv2.imshow("camera",img)
 
    #按键处理,注意,焦点应当在摄像头窗口,不是在终端命令行窗口
        key = cv2.waitKey(10) 
 
        if key == 27:
        #esc键退出
            print("esc break...")
            break
        if key == ord(' '):
             #保存一张图像
            num = num+1
            filename = "frames_%s.jpg" % num
            cv2.imwrite(filename,img)
            
    capture.release()
    cv2.destroyWindow("camera")

在这里插入图片描述
在这里插入图片描述

三、用python实现将手机摄像头画面(黑白)传到电脑端并且显示:

1、先上代码:(附有注释)

import cv2
import numpy as np

#设定蓝色的阈值
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])

if __name__ == '__main__':
 
    cv2.namedWindow("camera",1)
    #开启ip摄像头
    video="http://192.168.0.32:8081/"   #此处@后的ipv4 地址需要修改为自己的地址
    capture =cv2.VideoCapture(video)
    
while(1):    # 得到一个框架并且显示出来   
    ret, frame = capture.read()   
    cv2.imshow('Capture', frame)       
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)     #RGB转换为HSV型号
    mask = cv2.inRange(hsv, lower_blue, upper_blue)   # 根据阈值构建掩模    cv2.imshow('Mask', mask)    # 检测蓝色   
    res = cv2.bitwise_and(frame, frame, mask=mask) # 对原图像和掩模进行位运算   
    cv2.imshow('Result', res)   
    if cv2.waitKey(1) & 0xFF == ord('q'):      
        breakcap.release()
cv2.destroyAllWindows()

在这里插入图片描述

2、相关知识:

(1)capture =cv2.VideoCapture(video)
对这个有疑惑的同学可以看一下我的上一篇博客
OpenCV视觉学习之混合高斯模型进行背景建模

(2)ret, frame = capture.read()

第一个参数ret 为True 或者False,代表有没有读取到图片
第二个参数frame表示截取到一帧的图片

(3)在阴影检测算法中经常需要将RGB格式的图像转化为HSV格式,对于阴影区域而言,它的色度和饱和度相对于原图像而言变化不大,主要是亮度信息变化较大,,将RGB格式转化为HSV格式,就可以得到H、S、V分量,从而得到色度、饱和度、亮度得值;

具体的阐述:
HSV模型 :倒圆锥模型,HSV就是按照色彩、深浅、明亮来描述的。
1)H表示色彩,亦色调
2)S表示深浅,S=0时,只有灰度,亦饱和度
3)V表示明亮,色彩的明亮程度,亦亮度,该值与光强没有直接联系。

(4)mask = cv2.inRange(hsv, lower_blue, upper_blue)
调节图像颜色信息(H)、饱和度(S)、亮度(V)区间,选择蓝色区域.

(5)res = cv2.bitwise_and(frame, frame, mask=mask)

图象的按位运算函数与cv2.bitwise_and和运算,cv2.bitewise_or或运算,cv2.bitewise_not非运算,cv2.bitewise_xor异或运算

就以和运算为例cv2.bitwise_and(frame, frame, mask=mask)。frame,和frame是图象,可以一样;mask是要选定的区域(不处理这些,而处理其他的),没有的话可以忽略。函数实际上就是对图象的二进制数据进行与或非操作。具体的应用结合了下一小节一起展示了出来。

(6)cv2.waitKey(1) & 0xFF == ord(‘q’):

cv2.waitKey(1) 1为参数,单位毫秒,表示间隔时间.
ord(’ ')将字符转化为对应的整数(ASCII码)

0xFF是十六进制常数,二进制值为11111111。通过使用位和(和)这个常数,它只留下原始的最后8位。

四、嘿嘿,都看到这里了,点个赞再走呗
在这里插入图片描述在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信奥教练橙子

你的鼓励将是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值