当前位置: 首页 > news >正文

类似优酷网站建设价格vs2012 做网站教程

类似优酷网站建设价格,vs2012 做网站教程,做网站 赚钱多吗,佛山建设局网站文章目录 相机话题获取图像颜色目标识别与定位目标跟随人脸检测 相机话题 启动仿真 roslaunch wpr_simulation wpb_stage_robocup.launch rostopic hz /kinect2/qhd/image_color_rect/camera/image_raw#xff1a;原始的、未经处理的图像数据。 /camera/image_rect#xff… 文章目录 相机话题获取图像颜色目标识别与定位目标跟随人脸检测 相机话题 启动仿真 roslaunch wpr_simulation wpb_stage_robocup.launch rostopic hz /kinect2/qhd/image_color_rect/camera/image_raw原始的、未经处理的图像数据。 /camera/image_rect经过畸变校正的图像数据。 /camera/image_rect_color彩色的、经过畸变校正的图像数据。 /camera/camera_info相机的内参信息如焦距、主点坐标和畸变系数等。 image_rect_color话题的消息格式就是sensor_msgs/Image Header header # 图像的头部信息 uint32 height # 图像的高度行数 uint32 width # 图像的宽度列数 string encoding # 像素编码格式 uint8 is_bigendian # 数据是否为大端序 uint32 step # 每行的字节长度 uint8[] data # 图像的原始数据光线入射 入射光线光线从物体反射后进入相机镜头最终到达相机的感光芯片图像传感器。 光线包含红R、绿G、蓝B三种颜色的成分。栅格滤镜 Bayer 栅格滤镜感光芯片上方覆盖了一层滤镜称为 Bayer 栅格滤镜。它由红、绿、蓝三种颜色的滤光片以特定的排列方式组成。 滤光片的作用每个滤光片只允许特定颜色的光线通过 红色滤光片只允许红色光线通过。 绿色滤光片只允许绿色光线通过。 蓝色滤光片只允许蓝色光线通过。感光芯片 感光芯片光线通过滤光片后照射到感光芯片上。感光芯片由许多光敏单元像素组成每个像素只能检测到一种颜色的光强信息。 光强信息每个像素根据接收到的光强生成电信号电信号的强度与光强成正比。像素阵列 像素阵列感光芯片上的像素按照一定的排列方式组成一个二维阵列。每个像素存储的是经过滤光片过滤后的光强信息。 颜色分离由于每个像素只能检测到一种颜色因此整个图像被分解为红、绿、蓝三个独立的像素阵列 红色像素阵列存储红色光强信息。 绿色像素阵列存储绿色光强信息。 蓝色像素阵列存储蓝色光强信息。图像重建 插值算法为了生成完整的彩色图像需要对每个像素的颜色信息进行插值。插值算法会根据相邻像素的颜色信息估计出每个像素的完整 RGB 值。 最终图像经过插值处理后每个像素都包含完整的 RGB 信息从而形成完整的彩色图像。 获取图像 catkin_create_pkg cv_pkg roscpp rospy cv_bridgeroslaunch wpr_simulation wpb_balls.launch rosrun cv_pkg cv_image_node rosrun wpr_simulation ball_random_move #includeros/ros.h #includecv_bridge/cv_bridge.h //包含 cv_bridge 头文件用于在 ROS 图像消息sensor_msgs/Image和 OpenCV 图像格式cv::Mat之间进行转换。 #includesensor_msgs/image_encodings.h //包含 sensor_msgs 中的图像编码格式定义例如 BGR8、RGB8 等 #includeopencv2/imgproc/imgproc.hpp //包含 OpenCV 的图像处理模块头文件提供图像处理功能如图像滤波、边缘检测等 #includeopencv2/highgui/highgui.hpp //包含 OpenCV 的高级用户界面模块头文件提供图像显示和窗口管理功能。 using namespace cv; //使用 OpenCV 的命名空间 cv避免在代码中多次使用 cv:: 前缀。 void Cam_RGB_Callback(const sensor_msgs::Image msg) {cv_bridge::CvImagePtr cv_ptr;try{ //将 ROS 的图像消息sensor_msgs::Image转换为 OpenCV 的图像格式cv::Mat。//BGR8 是一种图像编码格式表示每个像素由 3 个字节组成分别对应蓝Blue、绿Green、红Red三个颜色通道每个通道 8 位1 字节cv_ptr cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);}catch(cv_bridge::Exception e){ROS_ERROR(Could not convert from %s to bgr8., e.what());return;}//cv_bridge::CvImagePtr 对象中获取 OpenCV 的 cv::Mat 图像数据Mat imageOriginalcv_ptr-image;//作用在窗口中显示图像。// RGB_Image窗口名称。// imageOriginal要显示的图像数据。imshow(RGB_Image, imageOriginal);//作用确保图像窗口能够有足够时间显示。waitKey(3); } int main(int argc, char** argv) {ros::init(argc, argv, cv_image_node);ros::NodeHandle nh;//kinect2含义表示这是 Kinect 2 相机的数据话题。//qhd含义表示 Quarter HD四分之一高清分辨率。ros::Subscriber rgb_sub nh.subscribe(/kinect2/qhd/image_color_rect, 1, Cam_RGB_Callback);namedWindow(RGB_Image);ros::spin(); }颜色目标识别与定位 RGBRed, Green, Blue颜色空间是一种基于光的加色模型通过红、绿、蓝三种颜色光的不同强度组合来表示颜色。 立方体结构 Red红色表示红色光的强度从 0 到 255。 Green绿色表示绿色光的强度从 0 到 255。 Blue蓝色表示蓝色光的强度从 0 到 255。颜色表示 每个颜色由三个分量组成例如 (R, G, B)。 例如纯红色为 (255, 0, 0)纯绿色为 (0, 255, 0)纯蓝色为 (0, 0, 255)。 HSVHue, Saturation, Value颜色空间是一种基于人类视觉感知的颜色模型 圆锥结构 Hue色调表示颜色的类型通常用角度表示范围为 0° 到 360°。 0° 或 360°红色 120°绿色 240°蓝色Saturation饱和度表示颜色的纯度范围为 0 到 100%。 0%灰色没有颜色 100%最纯的颜色Value亮度表示颜色的明暗程度范围为 0 到 100%。 0%黑色 100%最亮的颜色 #includeros/ros.h #includecv_bridge/cv_bridge.h #includesensor_msgs/image_encodings.h #includeopencv2/imgproc/imgproc.hpp #includeopencv2/highgui/highgui.hppusing namespace cv; using namespace std;static int iLowH 10; static int iHighH 40;static int iLowS 90; static int iHighS 255;static int iLowV 1; static int iHighV 255;void Cam_RGB_Callback(const sensor_msgs::Image msg) {cv_bridge::CvImagePtr cv_ptr;try{cv_ptr cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);}catch(cv_bridge::Exception e){ROS_ERROR(cv_bridge exception: %s, e.what());return;}Mat imgOriginal cv_ptr-image;//创建一个 cv::Mat 对象 imgHSV用于存储转换后的 HSV 图像Mat imgHSV;//将原始图像 imgOriginal 从 BGR 颜色空间转换为 HSV 颜色空间并存储到 imgHSV 中。cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV);//创建一个 std::vectorcv::Mat 对象 hsvSplit用于存储 HSV 图像的三个通道H、S、V。vectorMat hsvSplit;//将 imgHSV 图像的三个通道H、S、V分离并存储到 hsvSplit 中split(imgHSV, hsvSplit);//equalizeHist 是 OpenCV 中用于对单通道图像进行直方图均衡化Histogram Equalization的函数。//对 hsvSplit[2]V 通道即亮度通道进行直方图均衡化并将结果存储回 hsvSplit[2] //将输入图像的直方图拉伸为均匀分布从而增强图像的对比度。equalizeHist(hsvSplit[2], hsvSplit[2]);//将多个单通道图像合并为一个多通道图像的函数。//将处理后的 HSV 通道H、S、V重新合并为一个三通道图像并存储到 imgHSV 中。merge(hsvSplit, imgHSV);Mat imgThresholded;inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded);//创建一个 5x5 的矩形结构元素kernel。// MORPH_RECT表示矩形形状。// Size(5, 5)表示结构元素的大小为 5x5Mat elementgetStructuringElement(MORPH_RECT, Size(5, 5));// 对 imgThresholded 图像进行 开运算。// 开运算先腐蚀后膨胀。开运算白色噪声被去除图像的亮区域变得更加平滑。// 腐蚀去除图像中的小亮斑白色噪声。// 膨胀恢复图像中的主要亮区域。morphologyEx(imgThresholded, imgThresholded, MORPH_OPEN, element);// 作用对 imgThresholded 图像进行 闭运算。// 闭运算先膨胀后腐蚀。闭运算黑色噪声被填补图像的暗区域变得更加平滑。// 膨胀填补图像中的小暗斑黑色噪声。// 腐蚀恢复图像中的主要暗区域。morphologyEx(imgThresholded, imgThresholded, MORPH_CLOSE, element);int nTargetX 0;int nTargetY 0;int nPixCount 0;int nImgWidth imgThresholded.cols;int nImgHeight imgThresholded.rows;int nImgChannels imgThresholded.channels();for(int i0; inImgHeight; i){for(int j0; jnImgWidth; j){if(imgThresholded.data[i*nImgWidthj] 255){nTargetX j;nTargetY i;nPixCount;}}}if(nPixCount 0){nTargetX / nPixCount; nTargetY / nPixCount;printf(颜色质心坐标 %d , %d点数 %d \n, nTargetX, nTargetY,nPixCount);//line_begin定义了第一条线段的起点坐标为 (nTargetX-10, nTargetY)。//line_end定义了第一条线段的终点坐标为 (nTargetX10, nTargetY)。Point line_begin Point(nTargetX-10, nTargetY);Point line_end Point(nTargetX10, nTargetY);//imgOriginal 图像上绘制一条从 line_begin 到 line_end 的红色线段。line(imgOriginal, line_begin, line_end, Scalar(0, 0, 255));//两点定义了一条垂直线段长度为 20 个像素line_begin.x nTargetX;line_begin.y nTargetY-10;line_end.x nTargetX;line_end.y nTargetY10;line(imgOriginal, line_begin, line_end, Scalar(0, 0, 255));}else{printf(未检测到目标\n);}imshow(RGB, imgOriginal);imshow(HSV, imgHSV);imshow(Result, imgThresholded);cv::waitKey(5); }int main (int argc, char** argv) {ros::init(argc, argv, cv_hsv_node);ros::NodeHandle nh;ros::Subscriber rgb_sub nh.subscribe(kinect2/qhd/image_color_rect, 1, Cam_RGB_Callback);namedWindow(Threshold, WINDOW_AUTOSIZE);createTrackbar(LowH, Threshold, iLowH, 179); //Hue (0 - 179) 缩小一半createTrackbar(HighH, Threshold, iHighH, 179);createTrackbar(LowS, Threshold, iLowS, 255);//Saturation (0 - 255)createTrackbar(HighS, Threshold, iHighS, 255);createTrackbar(LowV, Threshold, iLowV, 255);//Value (0 - 255)createTrackbar(HighV, Threshold, iHighV, 255);namedWindow(RGB);namedWindow(HSV);namedWindow(Result);ros::Rate loop_rate(30);while(ros::ok()){ros::spinOnce();loop_rate.sleep();} }目标跟随 识别的物体的质心与中点的距离作为移动速度和旋转速度 #includeros/ros.h #includecv_bridge/cv_bridge.h #includesensor_msgs/image_encodings.h #includeopencv2/imgproc/imgproc.hpp #includeopencv2/highgui/highgui.hpp #includegeometry_msgs/Twist.husing namespace cv; using namespace std;static int iLowH 10; static int iHighH 40;static int iLowS 90; static int iHighS 255;static int iLowV 1; static int iHighV 255;geometry_msgs::Twist vel_cmd; ros::Publisher vel_pub;void Cam_RGB_Callback(const sensor_msgs::Image msg) {cv_bridge::CvImagePtr cv_ptr;try{cv_ptr cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);}catch(cv_bridge::Exception e){ROS_ERROR(cv_bridge exception: %s, e.what());return;}Mat imgOriginal cv_ptr-image;Mat imgHSV;vectorMat hsvSplit;cvtColor(imgOriginal, imgHSV, CV_BGR2HSV);split(imgHSV, hsvSplit);equalizeHist(hsvSplit[2], hsvSplit[2]);merge(hsvSplit, imgHSV);Mat imgThresholded;inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded);Mat element getStructuringElement(MORPH_RECT, Size(5, 5));morphologyEx(imgThresholded, imgThresholded, MORPH_OPEN, element); morphologyEx(imgThresholded, imgThresholded, MORPH_CLOSE, element);int nTargetX 0;int nTargetY 0;int nPixCount 0;int nImgWidth imgThresholded.cols;int nImgHeight imgThresholded.rows;int nImgChannels imgThresholded.channels();for(int i0; inImgHeight; i){for(int j0; jnImgWidth; j){if(imgThresholded.data[i*nImgWidthj] 255){nTargetX j;nTargetY i;nPixCount;}}}if(nPixCount 0){nTargetX / nPixCount;nTargetY / nPixCount;printf(颜色质心坐标 %d , %d点数 %d \n, nTargetX, nTargetY,nPixCount);nImgWidth;Point line_begin Point(nTargetX-10,nTargetY);Point line_end Point(nTargetX10,nTargetY);line(imgOriginal,line_begin,line_end,Scalar(255,0,0));line_begin.x nTargetX; line_begin.y nTargetY-10; line_end.x nTargetX; line_end.y nTargetY10; line(imgOriginal,line_begin,line_end,Scalar(255,0,0));float fVeFoward(nImgHeight/2-nTargetY)*0.002; //差值越大移动速度越大float fVelTurn(nImgWidth/2-nTargetX)*0.002; //差值越大旋转速度越大vel_cmd.linear.x fVeFoward;vel_cmd.linear.y 0;vel_cmd.linear.z 0;vel_cmd.angular.x 0;vel_cmd.angular.y 0;vel_cmd.angular.z fVelTurn;}else{printf(未检测到颜色\n);vel_cmd.linear.x 0;vel_cmd.linear.y 0;vel_cmd.linear.z 0;vel_cmd.angular.x 0;vel_cmd.angular.y 0;vel_cmd.angular.z 0;}vel_pub.publish(vel_cmd);printf(移动速度%f,%f,%f 旋转速度%f,%f,%f\n,vel_cmd.linear.x,vel_cmd.linear.y,vel_cmd.linear.z,vel_cmd.angular.x,vel_cmd.angular.y,vel_cmd.angular.z);imshow(RGB, imgOriginal);imshow(Result, imgThresholded);cv::waitKey(1); } int main(int argc, char** argv) { ros::init(argc, argv, cv_follow_node);ros::NodeHandle nh;ros::Subscriber rgb_sub nh.subscribe(kinect2/qhd/image_color_rect, 1, Cam_RGB_Callback); vel_pub nh.advertisegeometry_msgs::Twist(cmd_vel, 1);namedWindow(Threshold, WINDOW_AUTOSIZE);createTrackbar(LowH, Threshold, iLowH, 179); //Hue (0 - 179) 缩小一半createTrackbar(HighH, Threshold, iHighH, 179);createTrackbar(LowS, Threshold, iLowS, 255);//Saturation (0 - 255)createTrackbar(HighS, Threshold, iHighS, 255);createTrackbar(LowV, Threshold, iLowV, 255);//Value (0 - 255)createTrackbar(HighV, Threshold, iHighV, 255);namedWindow(RGB);namedWindow(Result);ros::spin();}人脸检测 roslaunch wpr_simulation wpr1_single_face.launch rosrun cv_pkg cv_face_detect rosrun wpr_simulation keyboard_vel_ctrl #includeros/ros.h #includecv_bridge/cv_bridge.h #includesensor_msgs/image_encodings.h #includeopencv2/imgproc/imgproc.hpp #includeopencv2/highgui/highgui.hpp #includeopencv2/objdetect/objdetect.hppusing namespace std; using namespace cv;static CascadeClassifier face_cascade;//cv::CascadeClassifier 对象用于加载 Haar 特征分类器文件。static Mat frame_gray; //存储黑白图像 static vectorRect faces;static vectorRect::const_iterator face_iter;void CallbackRGB(const sensor_msgs::ImageConstPtr msg) {cv_bridge::CvImagePtr cv_ptr;try{cv_ptr cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);}catch( cv_bridge::Exception e){ROS_ERROR(cv_bridge exception: %s, e.what());return;}Mat imgOriginal cv_ptr-image;//将原始图像转换为灰度图像因为人脸检测通常在灰度图像上进行cvtColor(imgOriginal, frame_gray, CV_BGR2GRAY);equalizeHist(frame_gray, frame_gray);//detectMultiScaleCascadeClassifier 类的成员函数用于检测图像中的多尺度特征如人脸)// frame_gray输入的灰度图像。// faces输出的矩形框数组表示检测到的人脸区域。// 1.1尺度因子表示每次图像缩放的比例。// 2最小邻居数表示每个候选区域的最小邻居数。// 0|CASCADE_SCALE_IMAGE检测选项包括图像缩放。// Size(30, 30)最小检测窗口大小表示检测到的人脸的最小尺寸。face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0|CASCADE_SCALE_IMAGE, Size(30, 30));if(faces.size()0){ //遍历检测到的所有人脸区域。for(face_iter faces.begin(); face_iter ! faces.end(); face_iter){ // imgOriginal原始图像用于绘制矩形框。// Point(face_iter-x, face_iter-y)矩形框的左上角点。// Point(face_iter-x face_iter-width, face_iter-y face_iter-height)矩形框的右下角点。// CV_RGB(255, 0, 255)矩形框的颜色表示为 RGB 值这里是紫色。// 2矩形框的边框厚度。rectangle(imgOriginal, Point(face_iter-x , face_iter-y), Point(face_iter-xface_iter-width, face_iter-yface_iter-height), CV_RGB(255, 0, 255),2);}}imshow(face, imgOriginal);waitKey(1); } int main(int argc, char** argv) {ros::init(argc, argv, cv_face_detect);namedWindow(face);std::string strLoadFile;char const* home getenv(HOME);strLoadFile home;strLoadFile /AI_Study_Note/Embodied-AI/ROS/catkin_ws/src;//haarcascade_frontalface_alt.xml 文件是一个 XML 文件包含了用于人脸检测的 Haar 特征分类器的模型参数strLoadFile /wpr_simulation/config/haarcascade_frontalface_alt.xml;bool resface_cascade.load(strLoadFile);if(resfalse){ROS_ERROR(Load haarcascade_frontalface_alt.xml failed!);return 0;}ros::NodeHandle nh;ros::Subscriber sub nh.subscribe(/kinect2/qhd/image_color_rect, 1, CallbackRGB);ros::spin();return 0; }
http://www.w-s-a.com/news/489764/

相关文章:

  • o2o是什么意思通俗讲seo与网站优化 pdf
  • 外贸网站外包一般建设一个网站多少钱
  • 抄袭别人网站的前端代码合法吗网络促销策略
  • 用wordpress制作网站做资源网站
  • wordpress 发布网站南宁网站建设网站
  • 职业生涯规划大赛心得贵阳哪家网站做优化排名最好
  • wordpress 图片懒加载北京网站优化和推广
  • 深圳网站建设工作一个dede管理两个网站
  • 被禁止访问网站怎么办中国建筑网官网查询系统
  • 网站管理运营建设网贷网站
  • 深圳市龙岗区住房和建设局网站怎么给网站做404界面
  • 设计类网站网站系统 建设和软件岗位职责
  • 网站后台打开慢站长之家网址ip查询
  • 图书馆网站设计方案家具设计作品
  • 马鞍山做网站公司排名徐州网站外包
  • 十堰微网站建设电话宣传型网站建设
  • 电脑制作网站教程网络公司除了建网站
  • 360制作网站搜网站网
  • 门户网站标题居中加大网站底部的制作
  • 网站建设项目费用报价ai软件下载
  • 面料 做网站重庆网站seo费用
  • 中国沈阳网站在哪里下载中国移动营销策略分析
  • 建设银行 钓鱼网站360免费建站教程
  • wordpress全站cdn网站运营年度推广方案
  • 成都网站开发培训机构网站开发 实习报告
  • 廊坊网站建设佛山厂商wordpress神主题
  • 成县建设局网站中国建筑有几个工程局
  • 网站打不开被拦截怎么办单页面网站制作
  • 关于协会网站建设的建议设计公司名字参考
  • 怎样申请做p2p融资网站页面设计时最好使用一种颜色