关于在海康威视工业相机中进行二次开发和手眼标定的笔记

1.虚拟机下 ubuntu16.04+opencv3.2+opencv_contrib编译安装

https://blog.csdn.net/weixin_43053387/article/details/85806344

2.通过图像的指针读取图像

问题描述:
在项目开发的过程中,遇到了一个API,如下:

int Landmarklib::FindLandMark(unsigned char *image, Posture_d &pos, int &mark_idx)

上面函数中,第一个参数为输入参数,第二和第三个参数为输出参数。
第一个参数如何输入图像呢?

我的图像是通过Mat进行读取保存的,Mat src_image = imread("test.bmp");
直接传入src_image是错误的,后查询相关资料解决方法如下:通过OpenCV的Mat数据类型的data项

data:Mat对象中的一个指针,指向内存中存放矩阵数据的一块内存 (unsigned char* data)
int index;
Posture_d pos;
landmark.FindLandMark(src_image.data, pos, index);

3.在Qt中查看某一个文件是否存在

问题:在测试通过相机读取图像时,需要对保存的图像进行后续的操作,由于线程的使用错误,图像还未保存时,后续处理的函数已经开始运行了,所以导致图像并未传进去,但程序也不报错。
解决:通过QFile::exists()函数查看当前文件是否存在

qDebug() << QFile::exists("×××");   //查看当前文件是否存在

4.关于cvCvtColor()函数

问题:将相机采集到的图像通过 QLabel进行显示。有的是彩色相机,采集到的图像是三通道的,有的是黑白相机图像是单通道的。
函数形式: void cvCvtColor( const CvArr* src, CvArr* dst, int code );
功能:cvCvtColor是opencv库中的一个函数,实现色彩空间转换。

参数列表:
src:源图像(输入的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像)

dst:目标图像(输入的 8-bit , 16-bit 或 32-bit 单倍精度浮点数影像)

code:
RGB <--> BGR:CV_BGR2BGRA、CV_RGB2BGRA、CV_BGRA2RGBA、CV_BGR2BGRA、CV_BGRA2BGR
RGB <--> 5X5:CV_BGR5652RGBA、CV_BGR2RGB555、(以此类推,不一一列举)
RGB <---> Gray:CV_RGB2GRAY、CV_GRAY2RGB、CV_RGBA2GRAY、CV_GRAY2RGBA
RGB <--> CIE XYZ:CV_BGR2XYZ、CV_RGB2XYZ、CV_XYZ2BGR、CV_XYZ2RGB
RGB <--> YCrCb(YUV) JPEG:CV_RGB2YCrCb、CV_RGB2YCrCb、CV_YCrCb2BGR、CV_YCrCb2RGB、CV_RGB2YUV(将YCrCb用YUV替代都可以)
RGB <--> HSV:CV_BGR2HSV、CV_RGB2HSV、CV_HSV2BGR、CV_HSV2RGB
RGB <--> HLS:CV_BGR2HLS、CV_RGB2HLS、CV_HLS2BGR、CV_HLS2RGB
RGB <--> CIE L*a*b*:CV_BGR2Lab、CV_RGB2Lab、CV_Lab2BGR、CV_Lab2RGB
RGB <--> CIE L*u*v:CV_BGR2Luv、CV_RGB2Luv、CV_Luv2BGR、CV_Luv2RGB
RGB <--> Bayer:CV_BayerBG2BGR、CV_BayerGB2BGR、CV_BayerRG2BGR、CV_BayerGR2BGR、CV_BayerBG2RGB、CV_BayerGB2RGB、 CV_BayerRG2RGB、CV_BayerGR2RGB(在CCD和CMOS上常用的Bayer模式)
YUV420 <--> RGB:CV_YUV420sp2BGR、CV_YUV420sp2RGB、CV_YUV420i2BGR、CV_YUV420i2RGB

OpenCV默认图片通道顺序是BGR,而不是RGB。
解决:对于黑白、彩色图像进行分别处理

void Widget::display_myImage_L(const Mat *imagePrt)
{
    cv::Mat rgb;

    //判断是黑白、彩色图像
    QImage QmyImage_L;
    if (myImage_L->channels() > 1) {
        cv::cvtColor(*imagePrt, rgb, CV_BGR2RGB);
        QmyImage_L = QImage((const unsigned char *)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888);
    } else {
        cv::cvtColor(*imagePrt, rgb, CV_GRAY2RGB);
        QmyImage_L = QImage((const unsigned char *)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888);
    }

    QmyImage_L = (QmyImage_L)
                     .scaled(ui->lbl_camera_L->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); //饱满填充
}

5.Mat::reshape()的用法

在阅读姿态估计的代码中,有这样一段:

vector<double> camera = { 5491.0785, 0, 1207.4733, 0, 5472.8426, 1005.3919, 0, 0, 1 };
cameraMatrix = Mat(camera);
cameraMatrix = cameraMatrix.reshape(1, 3);

看到这挺纳闷的,camera是相机的内参矩阵中有9个参数,reshape(1, 3)不是将其变为1×3的矩阵嘛,这也不符啊,查阅资料后知道这里的reshape和np.reshape搞混了。

  • reshape函数既可以改变通道数,又可以对矩阵元素进行序列化。
    函数原型:
C++: Mat Mat::reshape(int cn,int rows=0) const

cn:表示通道数(channels),如果设置为0,则表示通道不变;如果设置为其他数字,表示要设置的通道数。
rows:表示矩阵行数,如果设置为0,则表示保持原有行数不变,如果设置为其他数字,表示要设置的行数。

6.QT 对文件的操作(创建、拷贝、写入、删除)

http://www.skcircle.com/?id=1013

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 海康工业相机halcon图像处理例程是指利用海康工业相机halcon的软件编程接口,进行图像处理的一组例程。海康工业相机halcon是一款高性能的工业相机,具备高分辨率、高帧率和低噪声等特点,广泛应用于机器视觉、工业自动化等领域。 通过halcon图像处理例程,可以实现多种图像处理任务。首先,可以对图像进行预处理,包括图像去噪、平滑、增强等操作,提高图像质量。其次,可以进行图像分割,将图像的目标从背景分离出来,便于后续的目标识别和测量。此外,还可以进行形状匹配,将图像的目标与模板进行匹配,实现目标识别和定位。同时,halcon图像处理例程还支持二维码和条形码的解码,可用于物流追溯、品质管理等应用。 除了上述常见的图像处理任务,halcon图像处理例程还支持其他一些高级功能。比如,可以进行三维重建,通过多个角度的图像获取,实现对物体的三维模型的生成。此外,还可以进行光学字符识别(OCR),实现对文本的自动识别和提取。 总之,海康工业相机halcon图像处理例程提供了一种方便快捷的方式,帮助用户利用halcon相机进行各种图像处理任务。无论是在机器视觉、工业自动化还是其他领域,都可以通过halcon图像处理例程实现高效准确的图像处理应用。 ### 回答2: 海康工业相机是一种高质量的工业相机,可以用于各种图像处理应用。Halcon软件是一款强大的图像处理软件,提供了丰富的功能和灵活的编程接口,可以与海康工业相机完美配合使用。 Halcon图像处理例程是指一些针对特定应用场景开发的图像处理算法或功能模块。通过使用这些例程,可以方便快捷地实现图像处理任务,提高工作效率。 以海康工业相机halcon图像处理为例,我们可以利用Halcon提供的各类图像处理例程来进行图像采集、图像预处理、特征提取、目标检测等操作。首先,我们可以使用halcon图像采集例程来获取海康工业相机采集到的图像数据。然后,我们可以利用Halcon的预处理例程对图像进行滤波、增强、去噪等操作,以提高图像的质量和可用性。接着,我们可以利用Halcon提供的特征提取函数来提取图像的特征,比如边缘、角点等。最后,我们可以使用Halcon的目标检测例程来实现目标的自动检测和识别。 通过使用海康工业相机halcon图像处理例程,可以快速、准确地完成各种图像处理任务。无论是工业自动化、机器视觉检测还是智能安防等领域,这些例程都能够为我们提供强大的功能和丰富的算法支持,使我们能够更好地应对各种复杂的图像处理需求。 ### 回答3: 海康工业相机是一种高性能的工业相机,它使用了先进的图像处理技术。其,Halcon图像处理例程是指一系列的图像处理算法和函数,可以用于处理从海康工业相机获取到的图像数据。 Halcon图像处理例程提供了丰富的功能,包括图像预处理、特征提取、模式匹配、三维视觉等。通过这些例程,我们可以对海康工业相机拍摄到的图像进行各种处理和分析。 首先,图像预处理模块可以对图像进行降噪、增强对比度、调整亮度等操作,以优化图像质量。例如,我们可以通过平滑算法去除图像的噪声,提高图像的清晰度。 其次,特征提取模块可以提取图像的关键特征,例如边缘、角点、轮廓等。这些特征可以用于目标检测、物体识别和跟踪等应用。通过特征提取,我们可以从图像提取出关键信息,用于进一步的分析和决策。 另外,模式匹配模块可以对图像进行模式匹配,即在图像寻找特定的目标或模式。这可以应用于自动检测、测量和分类等任务。我们可以使用模式匹配算法来寻找与预定义模式相匹配的图像区域。 最后,三维视觉模块可以通过对图像进行深度信息的提取和分析,实现对三维物体的测量和分析。这对于机器人导航、三维建模和物体识别等领域非常重要。 总而言之,海康工业相机halcon图像处理例程提供了多种图像处理算法和函数,可以支持各种工业应用。它的强大功能使得我们能够更好地处理和分析从海康工业相机获取到的图像数据,为实际应用提供更准确、高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boss-dog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值