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); }
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; }
//============================================================== 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; }