QTcpsocket 发送Mat图片
时间: 2023-09-06 13:14:34 浏览: 105
Qt TCP通信发送图片
可以将Mat格式的图片转换为QImage格式,然后使用QBuffer将QImage转换为QByteArray,最后通过QTcpSocket发送QByteArray即可。
以下是示例代码:
```cpp
// matToQImage函数用于将Mat格式的图片转换为QImage格式
QImage matToQImage(const cv::Mat &src) {
QImage dest(src.cols, src.rows, QImage::Format_RGB888);
cv::Mat temp;
cv::cvtColor(src, temp, cv::COLOR_BGR2RGB);
memcpy(dest.bits(), temp.data, temp.total() * temp.elemSize());
return dest;
}
// 将Mat格式的图片转换为QByteArray,并通过QTcpSocket发送
void sendMatImage(const cv::Mat &image, QTcpSocket *socket) {
// 将Mat格式的图片转换为QImage格式
QImage qImage = matToQImage(image);
// 将QImage转换为QByteArray
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
qImage.save(&buffer, "jpg");
// 发送QByteArray
socket->write(bytes);
}
```
注意,上述示例代码中使用了OpenCV库进行图片格式转换。如果您没有使用OpenCV库,可以使用Qt的QImage类提供的方法进行图片格式转换。
阅读全文