TEST(TBitField, compare_equal_bitfields_of_equal_size)
{
  const int size = 2;
  TBitField bf1(size), bf2(size);
  for (int i = 0; i < size; i++)
  {
    bf1.SetBit(i);
  }
  bf2 = bf1;

  EXPECT_EQ(bf1, bf2);
}
TEST(TBitField, assign_operator_changes_bitfield_size)
{
  const int size1 = 2, size2 = 5;
  TBitField bf1(size1), bf2(size2);
  for (int i = 0; i < size1; i++)
  {
    bf1.SetBit(i);
  }
  bf2 = bf1;

  EXPECT_EQ(2, bf2.GetLength());
}
TEST(TBitField, can_assign_bitfields_of_equal_size)
{
  const int size = 2;
  TBitField bf1(size), bf2(size);
  for (int i = 0; i < size; i++)
  {
    bf1.SetBit(i);
  }
  bf2 = bf1;

  EXPECT_NE(0, bf2.GetBit(0));
  EXPECT_NE(0, bf2.GetBit(1));
}
TEST(TBitField, bitfields_with_different_bits_are_not_equal)
{
  const int size = 4;
  TBitField bf1(size), bf2(size);

  bf1.SetBit(1);
  bf1.SetBit(3);

  bf2.SetBit(1);
  bf2.SetBit(2);

  EXPECT_NE(bf1, bf2);
}
Exemple #5
0
void
TestBitField3D<T>::testOperatorComparison() 
{
    DEFINE_TYPEDEFS;

    BitField bf1(1);
    BitField bf2(1);
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.setBit(5);
    bf2.setBit(5);
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.setBit(2);
    bf2.setBit(2);
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.setBit(7);
    bf2.setBit(7);
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.setBit(0);
    bf2.setBit(0);
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.invertBits();
    bf2.invertBits();
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.clearBits();
    bf2.clearBits();
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.fillBits();
    bf2.fillBits();
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.unsetBit(4);
    CPPUNIT_ASSERT(bf1 != bf2);

    bf2.unsetBit(4);
    CPPUNIT_ASSERT(bf1 == bf2);

    bf1.resize(2);
    CPPUNIT_ASSERT(bf1 != bf2);

    bf2.resize(2);
    CPPUNIT_ASSERT(bf1 == bf2);
}
TEST(TBitField, and_operator_applied_to_bitfields_of_equal_size)
{
  const int size = 4;
  TBitField bf1(size), bf2(size), expBf(size);
  // bf1 = 0011
  bf1.SetBit(2);
  bf1.SetBit(3);
  // bf2 = 0101
  bf2.SetBit(1);
  bf2.SetBit(3);

  // expBf = 0001
  expBf.SetBit(3);

  EXPECT_EQ(expBf, bf1 & bf2);
}
TEST(TBitField, several_intersection_in_one_line)
{
	const int size = 4;
	TBitField bf1(size), bf2(size), bf3(size), expbf(size);
	//bf1 = 1000
	bf1.SetBit(0);
	//bf2 = 1100;
	bf2.SetBit(0);
	bf2.SetBit(1);
	//bf3 = 1101;
	bf3.SetBit(0);
	bf3.SetBit(1);
	bf3.SetBit(3);
	//expbf = 1000;
	expbf.SetBit(0);
	EXPECT_EQ(expbf, bf1 & bf2 & bf3);
}
TEST(TBitField, and_operator_applied_to_bitfields_of_non_equal_size)
{
  const int size1 = 4, size2 = 5;
  TBitField bf1(size1), bf2(size2), expBf(size2);
  // bf1 = 0011
  bf1.SetBit(2);
  bf1.SetBit(3);
  // bf2 = 01010
  bf2.SetBit(1);
  bf2.SetBit(3);

  // expBf = 00010
  expBf.SetBit(1);
  expBf.SetBit(2);
  expBf.SetBit(3);

  EXPECT_EQ(expBf, bf1 | bf2);
}
int main()
{
	TBitField bit(10);
	cout << bit << " constructor\n";
	int m = bit.GetLength();
	cout << m << " lenght of bit\n";
	bit.SetBit(1);
	bit.SetBit(5);
	bit.SetBit(4);
	cout << bit << " Setting bits 1,4,5 on bit(10)\n";
	bit.ClrBit(5);
	cout << bit << " Clear bit 5 on bit(10)\n";
	TBitField bit3(21);
	bit3.SetBit(2);
	bit3.SetBit(15);
	bit3.SetBit(4);
	cout<<bit3<<" Setting bits 2, 4,15 on bit3(21)\n";
	TBitField bittemp(10);
	bittemp = bit | bit3;
	cout << bittemp << " Operation bit|bit3\n";
	bittemp = bit & bit3;
	cout << bittemp << " Operation bit&bit3\n";
	bittemp = ~bit;
	cout << bittemp << " Operation ~bit\n";
	TBitField bit4(10);
	cin >> bit4;
	cout << "bit4: " <<  bit4 << "\n";
	//int a;
	//cin >> a;
	const int size = 4;
	TBitField bf1(size), bf2(size);
	bf1.SetBit(1);
	bf1.SetBit(3);
	bf2.SetBit(1);
	bf2.SetBit(2);
	//int result = bf1 == bf2;
	//cout << "result = bf1 == bf2: " << result;
	int result = bf1 != bf2;
	cout << "result = bf1 != bf2: " << result;

}
Exemple #10
0
//==============================================================
void VideoTesting::run(int Type){
    //for (int i = 0; i < 2*33; i++) getNextFrame();
    cv::namedWindow("Orginal",CV_WINDOW_AUTOSIZE);
    cv::namedWindow("HSV Filtered",CV_WINDOW_AUTOSIZE);
    cv::namedWindow("Line Filtered",CV_WINDOW_AUTOSIZE);
    cv::namedWindow("Canny", CV_WINDOW_AUTOSIZE);

    if (Type == 2){
    cv::moveWindow("Orginal", 1400, 50);           //reading from photo
    cv::moveWindow("HSV Filtered", 1000, 50);
    cv::moveWindow("Line Filtered", 600, 50);
    cv::moveWindow("Canny", 100, 50);}
    else if (Type == 1){
    cv::moveWindow("Orginal", 1200, 50);           //reading from camera
    cv::moveWindow("HSV Filtered", 1200, 500);
    cv::moveWindow("Line Filtered", 600, 50);
    cv::moveWindow("Canny", 600, 500);}
    else if (Type == 0){
    cv::moveWindow("Orginal", 1400, 100);         //reading from video
    cv::moveWindow("HSV Filtered", 1400, 500);
    cv::moveWindow("Line Filtered", 800, 100);
    cv::moveWindow("Canny", 800, 500);}

    cv::Mat frame;
    cv::Mat filtered;
    cv::Mat filtered2;
    cv::Mat lineFiltered;
    cv::Mat contour;

    cv::namedWindow("Control", CV_WINDOW_AUTOSIZE); //create a window called "Control"
    int iLowH = 5;
    int iHighH = 105;
    int iLowS = 10;
    int iHighS = 59;
    int iLowV = 0;
    int iHighV = 237;
    int max = 1;
    //Create trackbars in "Control" window
    cvCreateTrackbar("LowH", "Control", &iLowH, 179); //Hue (0 - 179)
    cvCreateTrackbar("HighH", "Control", &iHighH, 179);
    cvCreateTrackbar("LowS", "Control", &iLowS, 255); //Saturation (0 - 255)
    cvCreateTrackbar("HighS", "Control", &iHighS, 255);
    cvCreateTrackbar("LowV", "Control", &iLowV, 255); //Value (0 - 255)
    cvCreateTrackbar("HighV", "Control", &iHighV, 255);
    cvCreateTrackbar("max", "Control", &max, 130);

    //HSVFilter hf(25, 179, 0, 255, 0,255);
    LineFilter lf;
    ShapeFilter sf(1, 1);
    BlurFilter bf(2, 0.2f);
    BlurFilter bf2(1, 0.4f);
    if (Type == 0)
        frame = cv::imread("test_path.png");       //img
    cv::Scalar color = cv::Scalar(255, 0, 0);

    while (1){
        //contour = cv::Mat::zeros(frame.size(), CV_8UC3);
        if (Type == 2)
            frame = this->getNextFrame(); //video
        if (Type == 1)
            frame = getNextCameraFrame(); //webcam
        contour = frame.clone();
        if(frame.cols == 0)break;       //exit when there is no next fraame

        //filtered = hf.filter(&frame);
        filtered2 = HSVFilter(frame, iLowH, iHighH, iLowS, iHighS, iLowV, iHighV);
        filtered = HSVFilter(frame, iLowH, iHighH, iLowS, iHighS, iLowV, iHighV);
        //filtered = blur(filtered,max);
        //filtered = bf.filter(filtered2);
        //filtered = bf2.filter(filtered);
        lineFiltered = lf.filter(filtered, 0);
        //lineFiltered = Moments(filtered);

        //draw rectangle
        if (sf.findRect(filtered)){
            std::vector<cv::RotatedRect> rect = sf.getRect();
            for (cv::RotatedRect rekt: rect){
                cv::Point2f rect_points[4]; rekt.points( rect_points );
                for( int j = 0; j < 4; j++ )
                   line( contour, rect_points[j], rect_points[(j+1)%4], color, 1, 8 );
                //delete rect;
                std::cout<<rekt.angle<<std::endl;
                cv::Point2f ps[4];
                rekt.points(ps);
                std::cout << ps[0] << " " << ps[1] << " " << ps[2] << " " << ps[3] << std::endl;
            }
        }

        //draw circle
        if (sf.findCirc(filtered)){
            auto rad = sf.getRad();
            auto cent = sf.getCenter();
            //radius
            for (unsigned int i = 0; i < rad.size(); i++){
                cv::circle(lineFiltered, cent[i], rad[i], cv::Scalar(255,0,0) );
            }
            //center
            for (unsigned int i = 0; i < rad.size(); i++){
                cv::circle(lineFiltered, cent[i], 2, cv::Scalar(0,255,0));
            }
        }

        //gets the mass center; testing purposes only
        auto t = sf.findMassCenter(filtered);
        for (cv::Point2f p: t){
            cv::circle(lineFiltered, p, 2, cv::Scalar(0,0,255));
        }

        imshow("Orginal", frame);
        imshow("HSV Filtered", filtered);
        imshow("Line Filtered", lineFiltered);
        imshow("Canny", contour);
        int key = cv::waitKey((33));        //wait for 33ms, ~= 30fps;
        //std::cout<<key<<std::endl;
        if (key == 27) break;               //if user press esc, break the loop
        else if(key == 98) cv::waitKey(0);  //"b" key, "pasues" play

        /*delete filtered;
        delete filtered2;
        delete lineFiltered;*/
    }
    cvReleaseCapture(&capture);
    //cap.release();
    std::cout << "End of video feed" << std::endl;
}