用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)
对这个有疑惑的同学可以看一下我的上一篇博客
https://blog.csdn.net/weixin_45870610/article/details/104924624

(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位。

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

发布了10 篇原创文章 · 获赞 13 · 访问量 2622

猜你喜欢

转载自blog.csdn.net/weixin_45870610/article/details/104970299
今日推荐