我在opencv中发现了许多通过socket从java发送mat到java或c++的例子,但是我不能让它在python上运行。在
服务器代码:
MatOfByte bytemat = new MatOfByte();
Highgui.imencode(".jpg", out, bytemat);
byte[] bytes = bytemat.toArray();
r.write(String.valueOf(bytes.length));
Log.d(TAG, String.valueOf(bytes.length));
r.write(bytes);
python代码:
^{pr2}$奇怪的是imdecode总是返回None。我就是不能让它工作。 PS:java客户机使用ObjectInputStream工作
----编辑---- 感谢大家的建议,我已经用预定义的字节替换了字节流,发现Java在发送字节时发送了一些头,因为它使用的是ObjectOutputStream。在
现在写入套接字的java代码是:
DataOutputStream oos = null;
try {
oos = new DataOutputStream(os);
oos.write(byteImage);
} catch (Exception e) {
Log.e(TAG, "Error while writing to OutputStream", e);
cancel();
setState(STATE_NONE, this.type);
}
感谢大家的建议,我已经用预定义的字节替换了字节流,发现Java在发送字节时发送了一些头,因为它使用的是ObjectOutputStream。在
现在写入套接字的java代码是:
现在可以了。剩下的唯一问题是颜色颠倒了。有没有关于如何再次反转它们的提示?在
尝试使用
np.uint8(nparr)
进行转换,如中所示:这个例子起作用:
^{pr2}$[编辑]如果是彩色图像,请记住OpenCV2图像是由RGB代替的,因此您可以使用
相关问题 更多 >
编程相关推荐