我正在尝试从我的框架中获取轮廓,这就是我所做的:
cv::Mat frame,helpframe,yframe,frame32f;
Videocapture cap(1);
.......
while(waitkey()){
cv::Mat result = cv::Mat::zeros(height,width,CV_32FC3);
cap >> frame; // get a new frame from camera
frame.convertTo(frame32f,CV_32FC3);
for ( int w = 0; w< 10;w ++){
result += frame32f;
}
//Average the frame values.
result *= (1.0/10);
result /= 255.0f;
cvtColor(result,yframe,CV_RGB2YCrCb); // converting to Ycbcr///// the code work fine when I use frame instead of result
extractChannel(yframe,helpframe,0); //extracting the Y channel
cv::minMaxLoc(helpframe,&minValue,&maxValue,&min,&max);
std::vector<std::vector<cv::Point>> contours;
cv::findContours(helpframe, contours,CV_RETR_LIST /*CV_RETR_EXTERNAL*/, CV_CHAIN_APPROX_SIMPLE);
..................................................... ..
程序在 处崩溃findcontours
,我调试时收到以下错误消息:
OpenCV 错误:未知函数中不支持的格式或格式组合([Start]FindContours 仅支持 8uC1 和 32sC1 图像),文件......\src\openc v\modules\imgproc\src\contours.cpp,第 196 行
@Niko 感谢您的帮助我认为我必须将帮助框架转换为另一种类型。当我使用 result我得到 helpframe.type() => 5 和frame 我得到 0
我不知道这是什么意思?但我会尝试找到一种方法来转换帮助框架。
转换 helpframe 后: helpframe.convertTo(helpframe2,CV_8U)
我什么也没得到 helpframe2 is = 0 ?? 当我尝试使用 frame 而不是 resultframe 时,转换是否有效?
知道我应该如何更改帮助框架类型,因为我使用结果而不是框架?