提交 9320e475 编写于 作者: V vlin17 提交者: Liangliang Zhang

Dreamview: porcess compressed image from image_short_topic

上级 9477937b
......@@ -26,10 +26,12 @@ limitations under the License.
namespace apollo {
namespace dreamview {
using apollo::drivers::CompressedImage;
using apollo::drivers::Image;
constexpr double ImageHandler::kImageScale;
template <>
void ImageHandler::OnImage(const std::shared_ptr<Image> &image) {
if (requests_ == 0) {
return;
......@@ -39,23 +41,37 @@ void ImageHandler::OnImage(const std::shared_ptr<Image> &image) {
const_cast<char *>(image->data().data()), image->step());
cv::cvtColor(mat, mat, cv::COLOR_RGB2BGR);
cv::resize(
mat, mat,
cv::Size(static_cast<int>(image->width() * ImageHandler::kImageScale),
static_cast<int>(image->height() * ImageHandler::kImageScale)),
0, 0, CV_INTER_LINEAR);
mat, mat,
cv::Size(static_cast<int>(image->width() * ImageHandler::kImageScale),
static_cast<int>(image->height() * ImageHandler::kImageScale)),
0, 0, CV_INTER_LINEAR);
std::unique_lock<std::mutex> lock(mutex_);
cv::imencode(".jpg", mat, send_buffer_, std::vector<int>() /* params */);
cvar_.notify_all();
}
template <>
void ImageHandler::OnImage(
const std::shared_ptr<CompressedImage> &compressed_image) {
std::vector<uint8_t> compressed_raw_data(compressed_image->data().begin(),
compressed_image->data().end());
cv::Mat mat_image = cv::imdecode(compressed_raw_data, CV_LOAD_IMAGE_COLOR);
cv::cvtColor(mat_image, mat_image, cv::COLOR_RGB2BGR);
std::unique_lock<std::mutex> lock(mutex_);
cv::imencode(".jpg", mat_image, send_buffer_,
std::vector<int>() /* params */);
cvar_.notify_all();
}
void ImageHandler::OnImageFront(const std::shared_ptr<Image> &image) {
if (FLAGS_use_navigation_mode) {
OnImage(image);
}
}
void ImageHandler::OnImageShort(const std::shared_ptr<Image> &image) {
void ImageHandler::OnImageShort(const std::shared_ptr<CompressedImage> &image) {
if (!FLAGS_use_navigation_mode) {
OnImage(image);
}
......@@ -69,9 +85,9 @@ ImageHandler::ImageHandler()
OnImageFront(image);
});
node_->CreateReader<Image>(
node_->CreateReader<CompressedImage>(
FLAGS_image_short_topic,
[this](const std::shared_ptr<Image> &image) {
[this](const std::shared_ptr<CompressedImage> &image) {
OnImageShort(image);
});
}
......
......@@ -55,10 +55,12 @@ class ImageHandler : public CivetHandler {
bool handleGet(CivetServer *server, struct mg_connection *conn);
private:
void OnImage(const std::shared_ptr<apollo::drivers::Image> &image);
template <typename SensorMsgsImage>
void OnImage(const std::shared_ptr<SensorMsgsImage> &image);
void OnImageFront(const std::shared_ptr<apollo::drivers::Image> &image);
void OnImageShort(const std::shared_ptr<apollo::drivers::Image> &image);
void OnImageShort(
const std::shared_ptr<apollo::drivers::CompressedImage> &image);
std::vector<uint8_t> send_buffer_;
std::atomic<int> requests_;
......
......@@ -88,7 +88,7 @@ export default class Dreamview extends React.Component {
<div className="right-pane">
{options.showPNCMonitor && options.showVideo &&
<div>
<Tab><span>Camera Sensor</span></Tab>
<Tab><span>Camera View</span></Tab>
<CameraVideo />
</div>
}
......
......@@ -14,7 +14,7 @@ export default class SensorCamera extends React.Component {
render() {
return (
<div className="card camera">
<div className="card-header"><span>Camera Sensor</span></div>
<div className="card-header"><span>Camera View</span></div>
<div className="card-content-column">
<CameraVideo />
</div>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册