我正在测试用这段代码将opencv img从python发送到使用socket.io的nodejs,但它不工作,有人能帮我吗?
Python
from socketio import Client
from cv2 import imread, imencode
import base64
socket = Client( )
@socket.on( 'connect' )
def connect( ):
print( 'connected to server' )
img = imread( 'screenshot.png' )
frame = imencode( '.png', img )[ 1 ]
encoded = base64.b64encode( frame )
socket.emit( 'img', encoded )
@socket.on( 'disconnect' )
def disconnect( ):
print( 'disconnected from server' )
socket.connect( 'http://127.0.0.1:3000' )
socket.wait( )
Nodejs
const express = require( 'express' )
const app = express( )
const http = require( 'http' ).Server( app )
const socket = require( 'socket.io' )( http )
const path = require( 'path' )
const fs = require( 'fs' )
const cv = require( 'opencv4nodejs' );
app.get( '/', ( req, res ) => {
res.sendFile( path.join( __dirname + '/index.html' ) )
} )
socket.on( 'connect', ( player ) => {
console.log( 'Connected: '+ player.id )
player.on( 'img', ( encoded ) => {
var buffer = Buffer.from( encoded, 'base64' )
var image = cv.imdecode( buffer, cv.IMREAD_COLOR )
cv.imwrite( 'img.png', image )
} )
player.on( 'disconnect', ( player ) => {
console.log( 'Disconnected: '+ player.id )
} )
} )
http.listen( 3000, ( ) => {
console.log( 'listening on *:3000' )
} )
我在nodejs中收到此警告/错误:
libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
很抱歉我的英语不好,顺便谢谢你。
发布于 2021-02-20 00:44:11
我用另一种方式推导出来的..它应该用utf-8解码base64字符串。
socket.emit( 'img', encoded.decode( 'utf-8' ) )
https://stackoverflow.com/questions/66270432
复制相似问题