如何阈值之间的多个范围在opencv



我是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();

最新更新