
#include"cvh"
#include"highguih"
#include
<iostream>
using
namespace
std;
int
main(int
argc,
char
argv)
{
IplImage
src
=
cvLoadImage(
"0bmp",
0
); //导入
int
width=src->width;//宽度
int
height
=
src->height;//高度
for
(size_t
row=0;row<height;row++)
{
uchar
ptr
=
(uchar)src->imageData+rowsrc->width;//获得灰度值数据指针
for
(size_t
cols=0;cols<width;cols++)
{
int
intensity=ptr[cols];
cout<<intensity<<"
";
}
}
return
0;
}
1、获取物体坐标:在OpenCV中使用图像处理算法识别出物体,并获取其在图像中的坐标。可以通过函数cv2findContours()、cv2boundingRect()等获取物体的坐标。
2、坐标转换:由于图像坐标系的原点通常在左上角,而机械臂坐标系的原点通常在机械臂的基座上,因此需要进行坐标转换。可以通过简单的数学计算来实现坐标转换。
3、通信协议:根据实际情况选择合适的通信协议,将物体的坐标转换为通信协议所需的数据格式。通常使用TCP/IP、串口通信等协议进行通信。
4、发送数据:将转换后的数据通过所选通信协议发送给机械臂。如果使用TCP/IP协议,可以使用Python的socket库进行通信。如果使用串口通信,可以使用Python的pyserial库进行通信。
5、机械臂控制:接收到物体坐标后,机械臂可以根据坐标信息进行控制,将机械臂移动到目标位置。
opencv只是个工具,它实现了计算机视觉领域很多很实用的算法。
学习opencv之前请先对计算机视觉的基础知识进行学习,建议至少学习一本计算机视觉的理论书籍和一本图像处理的理论书籍
有了以上基本的理论基础,再学习opencv,教程可以看,但更多的应该是看参考文档。opencv的参考文档是非常完善的,有看不懂的再到网上搜索,要抓住这个函数有什么用,在什么情况下用,输入输出分别是什么这条主线来学习。
另外关于opencv10和20以上版本
我建议新手从10入手,20大量使用mat,对于新手来说有些函数使用方法难以理解。
其实10版本已经足够强大了,我做过很多项目,都是用的10,对于新手来说,10已经足够你去啃上一年。当然20以上版本又多了很多算法,但其实很多算法很少用。所以从10入手是个不错的选择
#include <opencv2/opencvhpp>
using namespace cv;
void main()
{
VideoCapture capture(0);//如果是笔记本,0打开的是自带的摄像头,1 打开外接的相机
char filename[200];
int n = 0;
while (captureisOpened())
{
capture >> frame;
imshow("video", frame);
sprintf(filename, "视频截图%3djpg", n++);
imwrite(filename, frame);
if (waitKey(20) == 27)//27是键盘摁下esc时,计算机接收到的ascii码值
{
break;
}
}
}
以上就是关于使用OpenCV如何获取图像每个像素的灰度值全部的内容,包括:使用OpenCV如何获取图像每个像素的灰度值、opencv识别出的物体坐标如何和机械臂通信、新手学习opencv等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)