我是opencv的新手,我在windows7U(64位)上使用vs10c++的opencv2.4.5。我的项目是在阈值处理范围在140到160之间后显示图像,但我对最后一行
感到挂机下面是我的代码;
int main( int argc, char* argv[] )
{
//open the video
VideoCapture cap2(argv[2]);
if ( !cap2.isOpened() )
{
cout << "Cannot open the video file" << endl;
return -1;
}
//Threshold value of 140 to 160
if( cap2.isOpened() )
{
Mat frame, frame_gray, result;
for(;;)
{
int n;
int t1=140, t2=160;
n = 255;
cap2>>frame;
cvtColor( frame, frame_gray, CV_BGR2GRAY );
for (int i=0;i<frame_gray.size().height;i++)
{
for(int j=0;j<frame_gray.size().width;j++)
{
uchar val;
val = frame_gray.at<uchar>(j,i);
if (val>t1 && val<t2)
{val=255;}
else
{val=0;}
frame_gray.at<uchar>(j,i)=val;
}
如何显示过程循环多范围阈值后的结果?
你所需要的是inRange(),它将检查数组元素是否位于两个数组的元素之间。
所以把你的代码改成Mat thr;
inRange(frame_gray, Scalar(140),Scalar(160),thr);
imshow("processed",thr);
waitKey();