0
点赞
收藏
分享

微信扫一扫

45、OAK基本接口学习笔记&调用左右GAY相机和中间的RGB相机


基本思想:记录学习oak基本使用,学习demo和oak官方视频教程记录

45、OAK基本接口学习笔记&调用左右GAY相机和中间的RGB相机_#include

一、读取左相机的灰度图

cmakelists.txt

cmake_minimum_required(VERSION 3.16)
project(depthai)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
#message(STATUS ${OpenCV_INCLUDE_DIRS})
#添加头文件
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/include/utility)
#链接Opencv库
find_package(depthai CONFIG REQUIRED)
add_executable(depthai main.cpp include/utility/utility.cpp)
target_link_libraries(depthai ${OpenCV_LIBS} depthai::opencv)

main.cpp

#include <chrono>

#include "utility.hpp"

#include "depthai/depthai.hpp"


int main(int argc, char** argv) {
dai::Pipeline pipeline;
auto mono=pipeline.create<dai::node::MonoCamera>();
mono->setBoardSocket(dai::CameraBoardSocket::LEFT);

auto xlinkOut=pipeline.create<dai::node::XLinkOut>();
xlinkOut->setStreamName("left");

mono->out.link(xlinkOut->input);

dai::Device device(pipeline);
auto queue=device.getOutputQueue("left");
auto frame=queue->get<dai::ImgFrame>();
auto image=frame->getCvFrame();
cv::imwrite("a.jpg",image);

return 0;
}

测试结果

45、OAK基本接口学习笔记&调用左右GAY相机和中间的RGB相机_c++_02

 取帧显示

#include <chrono>

#include "utility.hpp"

#include "depthai/depthai.hpp"


int main(int argc, char** argv) {
dai::Pipeline pipeline;
//定义左相机
auto mono=pipeline.create<dai::node::MonoCamera>();
mono->setBoardSocket(dai::CameraBoardSocket::LEFT);
//定义输出
auto xlinkOut=pipeline.create<dai::node::XLinkOut>();
xlinkOut->setStreamName("left");
//相机和输出链接
mono->out.link(xlinkOut->input);
//结构推送相机
dai::Device device(pipeline);
//取帧显示
auto queue=device.getOutputQueue("left");

while(1){
auto frame=queue->get<dai::ImgFrame>();
auto image=frame->getCvFrame();
cv::imshow("image",image);
cv::waitKey(1);
cv::imwrite("a.jpg",image);
}


return 0;
}

二、双目获取帧和彩色获取帧

#include <chrono>

#include "utility.hpp"

#include "depthai/depthai.hpp"


int main(int argc, char** argv) {
dai::Pipeline pipeline;
//定义左相机
auto Leftmono=pipeline.create<dai::node::MonoCamera>();
Leftmono->setBoardSocket(dai::CameraBoardSocket::LEFT);
auto Rigthmono=pipeline.create<dai::node::MonoCamera>();
Rigthmono->setBoardSocket(dai::CameraBoardSocket::RIGHT);
//定义输出
auto xlinkLeftOut=pipeline.create<dai::node::XLinkOut>();
xlinkLeftOut->setStreamName("left");
auto xlinkRightOut=pipeline.create<dai::node::XLinkOut>();
xlinkRightOut->setStreamName("right");
//相机和输出链接
Leftmono->out.link(xlinkLeftOut->input);
Rigthmono->out.link(xlinkRightOut->input);
//结构推送相机
dai::Device device(pipeline);
//取帧显示
auto Leftqueue=device.getOutputQueue("left",1);//maxsize 代表缓冲数据
auto Rightqueue=device.getOutputQueue("right",1);//maxsize 代表缓冲数据
while(1){

auto Leftframe=Leftqueue->get<dai::ImgFrame>();
auto Rightframe=Rightqueue->get<dai::ImgFrame>();
auto Leftimage=Leftframe->getCvFrame();
auto Rightimage=Rightframe->getCvFrame();
cv::Mat result;
cv::hconcat(Leftimage, Rightimage, result);

cv::imshow("image",result);
cv::waitKey(1);

}

return 0;
}

测试结果

45、OAK基本接口学习笔记&调用左右GAY相机和中间的RGB相机_#include_03

彩色相机,这个例子官方demo是存在的

#include <chrono>

#include "utility.hpp"

#include "depthai/depthai.hpp"


int main(int argc, char** argv) {
dai::Pipeline pipeline;
//定义左相机
auto mono=pipeline.create<dai::node::ColorCamera>();
mono->setBoardSocket(dai::CameraBoardSocket::RGB);

//定义输出
auto xlinkOut=pipeline.create<dai::node::XLinkOut>();
xlinkOut->setStreamName("rgb");

//相机和输出链接
mono->video.link(xlinkOut->input);
;
//结构推送相机
dai::Device device(pipeline);
//取帧显示
auto queue=device.getOutputQueue("rgb",1);//maxsize 代表缓冲数据
while(1){

auto frame=queue->get<dai::ImgFrame>();

auto image=frame->getCvFrame();

cv::imshow("image",image);
cv::waitKey(1);

}

45、OAK基本接口学习笔记&调用左右GAY相机和中间的RGB相机_#include_04

参考:

​​OpenCV CEO教你用OAK(一)_哔哩哔哩_bilibili​​

举报

相关推荐

0 条评论