C++,用opencv图像的项目,Rect类 数组转换为CV_8UC1出错。
先定义的这个cv::Rect*ROI=newcv::Rect[10];//我把这个叫做Rect类数组指针(瞎叫的,高手知道的请更正下,谢谢)在对ROI初始化后,想把ROI...
先定义的这个cv::Rect* ROI = new cv::Rect[10];//我把这个叫做Rect类 数组指针(瞎叫的,高手知道的请更正下,谢谢)
在对ROI初始化后,想把ROI中的第一个元素转换为CV_8UC1类型的元素。并求平均值。
cv::Mat hsv_h = cv::Mat::zeros(ROI[i].height, ROI[i].width, CV_8UC1);
cv::Mat matColorH = cv::Mat::zeros(ROI[i].width, ROI[i].height, CV_8UC1);
hsv_h(ROI[0]).convertTo(matColorH, CV_8UC1, 1, 0);
cv::Scalar mean_h = mean(matColorH);
程序再调试时,总是自动中断到如下
Mat Mat::operator()(const Range* ranges) const
{
return Mat(*this, ranges);
}
函数。求高手告知详情,先大大的谢过了。 展开
在对ROI初始化后,想把ROI中的第一个元素转换为CV_8UC1类型的元素。并求平均值。
cv::Mat hsv_h = cv::Mat::zeros(ROI[i].height, ROI[i].width, CV_8UC1);
cv::Mat matColorH = cv::Mat::zeros(ROI[i].width, ROI[i].height, CV_8UC1);
hsv_h(ROI[0]).convertTo(matColorH, CV_8UC1, 1, 0);
cv::Scalar mean_h = mean(matColorH);
程序再调试时,总是自动中断到如下
Mat Mat::operator()(const Range* ranges) const
{
return Mat(*this, ranges);
}
函数。求高手告知详情,先大大的谢过了。 展开
1个回答
展开全部
你的二维数组是不是仅存放图像数据?如果是这样的话你可以这样做:IplImage* img = cvCreateImage( CvSize size, int depth, int channels ); //size为图像宽高,depth为位深度,channels为通道数
img->imageData = Arr; //Arr为二维数组名
cvNamedWindow( "Image", 1 );//创建窗口
cvShowImage( "Image", img );//显示图像
cvWaitKey(0); //等待按键
cvDestroyWindow( "Image" );//销毁窗口
cvReleaseImage( &img ); //释放图像
img->imageData = Arr; //Arr为二维数组名
cvNamedWindow( "Image", 1 );//创建窗口
cvShowImage( "Image", img );//显示图像
cvWaitKey(0); //等待按键
cvDestroyWindow( "Image" );//销毁窗口
cvReleaseImage( &img ); //释放图像
追问
不是,我是先找出了图像中符合条件的轮廓。然后把这些轮廓放在了Rect数组中。我现在想对数组中的第一个元素进行数据转换。转换成CV_8UC1。用到了函数hsv_h(ROI[0]).convertTo(matColorH, CV_8UC1, 1, 0);语法没错误,但是编译的时候总是报错。
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询