- //opencv转halcon
- HalconCpp::HObject rectmodbusthread::MatToHImage(cv::Mat& imgMat){
- HalconCpp::HObject Hobj = HalconCpp::HObject();
- int height = imgMat.rows;
- int width = imgMat.cols;
- int i;
- // CV_8UC3
- if (imgMat.type() == CV_8UC3)
- {
- std::vector<cv::Mat> imgchannel;
- split(imgMat, imgchannel);
- cv::Mat imgB = imgchannel[0;
- cv::Mat imgG = imgchannel[1;
- cv::Mat imgR = imgchannel[2;
- uchar* dataR = new uchar[height * width];
- uchar* dataG = new uchar[height * width];
- uchar* dataB = new uchar[height * width];
- for (i = 0; i<height; i++)
- {
- memcpy(dataR + width*i, imgR.data + imgR.step*i, width);
- memcpy(dataG + width*i, imgG.data + imgG.step*i, width);
- memcpy(dataB + width*i, imgB.data + imgB.step*i, width);
- }
- GenImage3(&Hobj, "byte", width, height, (Hlong)dataR, (Hlong)dataG, (Hlong)dataB);
- delete[]dataR;
- delete[]dataG;
- delete[]dataB;
- }
- // CV_8UCU1
- else if (imgMat.type() == CV_8UC1)
- {
- uchar* data = new uchar[height*width];
- for (i = 0; i<height; i++)
- memcpy(data + width*i, imgMat.data + imgMat.step*i, width);
- HalconCpp::GenImage1(&Hobj, "byte", width, height, (Hlong)data);
- delete[] data;
- }
- return Hobj;
- }
复制代码 我用以前的版本都可以就24.05版本不行 |