<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 安裝OpenCV OpenCV是一個開源的跨平臺(Linux、Window、Android和Mac OS系統)計算機視覺庫。OpenCV有C函數和少量C++類構成,主要接口是C++,同時還提供Python,Java等接口,有常用的圖像處理函數,能夠快速的實現一些圖像處理和識別任務。 在終端輸入下面命令: ``` sudo apt-get install libopencv-dev sudo apt-get install python-opencv ``` ## 安裝PIL PIL(python image library)是十分好用的一個可用于python的圖像處理庫,后面要用到它進行圖像的壓縮。 ``` sudo apt-get install python-imaging ``` ## 安裝numpy ``` sudo apt-get install python-numpy ``` dst_camera.py ```python # -*- coding: UTF-8 -*- # dst_camera.py import cv2 import socket import time import Image import StringIO import numpy as np HOST, PORT = "192.168.0.109", 48626 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((HOST, PORT)) #連接到服務器 f = sock.makefile() cv2.namedWindow("camera") while True: #從服務器讀取數據,一行的結尾是‘\n’,在數據源端發送的每一幀數據的‘\n’替換成‘\-n’ msg = f.readline() if not msg: break print len(msg), msg[-2] jpeg = msg.replace("\-n", "\n") #將‘\-n’替換成‘\n’ buf = StringIO.StringIO(jpeg[0:-1]) #緩存數據 buf.seek(0) pi = Image.open(buf) #使用PIL讀取jpeg圖像數據 img = cv2.cvtColor(np.asarray(pi), cv2.COLOR_RGB2BGR) #從PIL的圖像轉成opencv支持的圖像 buf.close() cv2.imshow("camera", img) #顯示圖像 if cv2.waitKey(10) == 27: break if cv2.waitKey(30) & 0xFF == ord('q'): #按q鍵退出while循環 break sock.close() cv2.destroyAllWindows() #關閉窗口 ``` 服務器端:server_camera.py ```python # -*- coding: UTF-8 -*- # server_camera.py import socket import time HOST, PORT = '', 48626 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((HOST, PORT)) #綁定服務器的IP地址和端口號(端口號1024以上) sock.listen(2) #監聽端口,等待客戶端連接 print "Server is running on port %d; press Ctrl+C to terminate." % PORT #等待數據源端連接 src, src_addr = sock.accept() #接收客戶端的連接請求 print "Source Connected by", src_addr #等待目標端連接 dst, dst_addr = sock.accept() #接收客戶端的連接請求 print "Destination Connected by", dst_addr while True: msg = src.recv(1024*1024) if not msg: break try: dst.sendall(msg) except Exception as ex: dst, dst_addr = sock.accept() print "Destination Connected Again by", dst_addr except KeyboardInterrupt: print "Interrupted" break src.close() dst.close() sock.close() ``` > HOST = ''主機的IP地址設為空,使服務器可以接收來自任何客戶端的連接 > PORT = 48626 #設置端口,選擇一個任意大于1024的端口即可 數據源端:src_camera.py ```python # -*- coding: UTF-8 -*- # src_camera.py import cv2 import time import socket import Image import StringIO #獲取攝像頭 cap = cv2.VideoCapture(0) #調整采集圖像大小為640*480 cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 480) HOST, PORT = '192.168.0.109', 46826 #連接服務器 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((HOST, PORT)) while True: ret, img = cap.read() #獲取一幀圖像 if ret is False: #未獲取圖像時,退出循環 print("can not get this frame") continue pi = Image.fromarry(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) #將OpenCV下的圖像轉換成PIL支持的格式 buf = StringIO.StringIO() #緩存對象 pi.save(buf, format = 'JPEG') #將PIL下的圖像壓縮成jpeg格式,存入內存中的字符串 jpeg = buf.getvalue() #從buf中讀出jpeg格式的圖像 buf.close() transfer = jpeg.replace('\n', '\-n') #替換\n為\-n,因為后面傳輸時,終止的地方會加上\n,可以便于區分 print(len(transfer)) print(transfer[-1]) sock.sendall(transfer + "\n") #通過socket傳到服務器 ''' cap.release() #釋放攝像頭 cv2.destroyAllWindows() #關閉所有窗口 ''' sock.close() #關閉socket ``` > PIL——圖像處理庫 > PIL庫提供通用的圖像處理功能,以及基本圖像操作,如圖像縮放、裁剪、旋轉、顏色轉換等。可以從http://www.pythonware.com/products/pil/下載 > PIL中最重要的模塊為Image > fromarry()實現不同圖像格式的轉換 > 對于彩色圖像,不管其格式是PNG,BMP還是JPG,在PIL中,使用Image模塊的open()函數打開后,返回的圖像對象的模式都是“RGB”。對于灰度圖像,不管格式是PNG、BMP還是JPG,打開后,其模式是“L”。 > 對PNG、BMP和JPG格式的轉換都是通過Image模塊的open()和save()函數來完成。具體: > 要讀取一幅圖像, > ```python > from PIL import Image > pil_img = Image.open('example.jpg') > ``` > 在open()時,PIL會將他們解碼成三通道的“RGB”圖像(或“L”圖像)。用戶可以基于這個圖像,對其進行處理 > 處理完畢,使用函數save(),可以將處理結果保存成PNG、BMP或JPG格式。 >https://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor > save()將圖像保存到內存中的字符串。(在引入io模塊前的舊python 2版本中,將使用StringIO模塊,對于Python3,需要使用BytesIO) > ```python > from io import BytesIO > from PIL import Image > > image = Image.new("RGB", (300, 50)) > draw = ImageDraw.Draw(image) > draw.text((0, 0), "This text is drawn on image") > > buf = BytesIO() > image.save(buf, 'JPEG') #這里可以‘JPEG’、'PNG'或其他格式 > ``` > save()采用類似文件的對象和路徑,因此可以像StringIO一樣使用內存緩沖區。 > ```python > contents = buf.getvalue() > buf.close() > ``` > 具體的函數信息可以參考:http://effbot.org/imagingbook/image.htm >ret, frame = cap.read() >第一個參數ret為True或者False,代表有沒有讀取到圖片 >第二個參數frame表示截取到一幀的圖片 ## 運行結果 先運行服務器端的程序,輸入 ``` python server_camera.py ``` 再運行數據源端的程序,輸入 ``` python src_camera.py ``` 最后在客戶端上運行,輸入 ``` python dst_camera.py ``` 參考:https://blog.csdn.net/hongbin_xu/article/details/78948162
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看