Exemple #1
0
int main()
{
	// Detect corners and edges on image
	cv::Mat image = cv::imread("opencv-corner-detection-sample.jpg", 0);
	
	// Define object for detecting corners
	MorphoFeatures morpho;
	morpho.setThreshold(40);
	
	// Get the edges
	cv::Mat edges;
	edges = morpho.getEdges(image);
	imshow("Edges", edges);
	
	cv::Mat corners;
	corners = morpho.getCorners(image);
	
	// Display the corner on the image
	imshow("Corners on Image", corners);
	
	// Draw corners
	morpho.drawOnImage(corners, image);
	imshow("Detected corners", image);
	
	cv::waitKey(0);
	return 0;
}
int main() {
    cv::Mat image = cv::imread("building.jpg");
    cv::namedWindow("Image");
    cv::imshow("Image", image);


    MorphoFeatures morpho;
    morpho.setThreshold(40);

    Mat edges;
    edges = morpho.getEdges(image);


    namedWindow("Hi");
    imshow("Hi", edges);
    cv::waitKey();
}
Exemple #3
0
int main(){
    Mat image=imread("/home/jiaqi/Pictures/images/building.jpg",0);
    namedWindow("Image");
    imshow("Image",image);
    MorphoFeatures morpho;
    morpho.setThreshold(40);
    Mat edges;
    edges=morpho.getEdges(image);
    namedWindow("Edge Image");
    imshow("Edge Image",edges);


    morpho.setThreshold(-1);
    Mat corners;
    corners= morpho.getCorners(image);
    morphologyEx(corners,corners,MORPH_TOPHAT,Mat());
    cv::threshold(corners, corners, 40, 255, THRESH_BINARY_INV);
    namedWindow("Corners");
    imshow("Corners",corners);
    morpho.drawOnImage(corners,image);
    namedWindow("Corners on Image");
    imshow("Corners on Image",image);


    waitKey(0);



    return 0;
}
Exemple #4
0
void ImagePro::on_btnDetectEdgeMorph_clicked()
{
    MorphoFeatures morpho;
    morpho.setThreshold(40);
    // Get the edges
    cv::Mat tmpImg;
    cv::cvtColor(_img, tmpImg, CV_RGB2GRAY);
    cv::Mat edges;
    edges= morpho.getEdges(tmpImg);
    cv::namedWindow("edge dection: Morphology");
    cv::imshow("edge dection: Morphology",edges);

    cv::Mat corners;
    corners= morpho.getCorners(tmpImg);
    cv::Mat tmp2;
    tmp2 = _img.clone();
    morpho.drawOnImage(corners,tmpImg);

    cv::namedWindow("corner dection: Morphology");
    cv::imshow("corner dection: Morphology",tmpImg);

}
Exemple #5
0
int main()
{
	// Read input image
	cv::Mat image= cv::imread(IMAGE_FOLDER "/building.jpg",0);
	if (!image.data)
		return 0; 
	// resize for book printing
	cv::resize(image, image, cv::Size(), 0.7, 0.7);

    // Display the image
	cv::namedWindow("Image");
	cv::imshow("Image",image);

	// Create the morphological features instance
	MorphoFeatures morpho;
	morpho.setThreshold(40);

	// Get the edges
	cv::Mat edges;
	edges= morpho.getEdges(image);

    // Display the edge image
	cv::namedWindow("Edge Image");
	cv::imshow("Edge Image",edges);

	// Get the corners
    morpho.setThreshold(-1);
	cv::Mat corners;
	corners= morpho.getCorners(image);
	cv::morphologyEx(corners,corners,cv::MORPH_TOPHAT,cv::Mat());
    cv::threshold(corners, corners, 35, 255, cv::THRESH_BINARY_INV);

    // Display the corner image
	cv::namedWindow("Corner Image");
	cv::imshow("Corner Image",corners);

    // Display the corner on the image
	morpho.drawOnImage(corners,image);
	cv::namedWindow("Corners on Image");
	cv::imshow("Corners on Image",image);

	// Read and display image of square
	image= cv::imread(IMAGE_FOLDER "/square.bmp",0);
	cv::namedWindow("Square Image");
	cv::imshow("Square Image",image);

	// Creating the cross-shaped structuring element
	cv::Mat cross(5,5,CV_8U,cv::Scalar(0));
	for (int i=0; i<5; i++) {
		  
	  cross.at<uchar>(2,i)= 1;
	  cross.at<uchar>(i,2)= 1;									
	}
		  
	// Dilate with a cross	
	cv::Mat result;
	cv::dilate(image,result,cross);

	// Display the result
	cv::namedWindow("Dilated square with cross");
	cv::imshow("Dilated square with cross",result);

	// Creating the diamond-shaped structuring element
	cv::Mat diamond(5,5,CV_8U,cv::Scalar(1));
	diamond.at<uchar>(0,0)= 0;
	diamond.at<uchar>(0,1)= 0;
	diamond.at<uchar>(1,0)= 0;
	diamond.at<uchar>(4,4)= 0;
	diamond.at<uchar>(3,4)= 0;
	diamond.at<uchar>(4,3)= 0;
	diamond.at<uchar>(4,0)= 0;
	diamond.at<uchar>(4,1)= 0;
	diamond.at<uchar>(3,0)= 0;
	diamond.at<uchar>(0,4)= 0;
	diamond.at<uchar>(0,3)= 0;
	diamond.at<uchar>(1,4)= 0;

	// Erode with a diamond
	cv::Mat result2;
	cv::erode(result,result2,diamond);

	// Display the result
	cv::namedWindow("Eroded square with diamond");
	cv::imshow("Eroded square with diamond",result2);

	// Combine the images into one
	cv::Mat final(100,300,CV_8U);
	cv::Mat window= final(cv::Rect(0,0,100,100));
	image.copyTo(window);
	window= final(cv::Rect(100,0,100,100));
	result.copyTo(window);
	window= final(cv::Rect(200,0,100,100));
	result2.copyTo(window);

	// Display the combined result
	cv::namedWindow("Combined");
	cv::imshow("Combined",final);

	// Save combined result
	cv::imwrite("squares.bmp",final);

	cv::waitKey();

	return 0;
}