opencv 学习(2)操作像素点画矩形与圆形

  操作较为基层,直接上代码。如有错误还请指出。

#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<vector>
using namespace cv;
using namespace std;
typedef unsigned int siZe;

void YKrectangle(Mat &image, Point Start, Point End,siZe flog)
{
	if(flog==0)
	{ 
	
	for (int i = Start.y; i <= End.y; i++)
	{
		for (int j = Start.x; j <= End.x; j++)
		{
			
			image.at<Vec3b>(i, j)[0] = i;
			image.at<Vec3b>(i, j)[1] = j;
			image.at<Vec3b>(i, j)[2] = (i+j)/2;
		
			
		}
	}
    }
	else if (flog == 1)
	{

		for (int i = Start.y; i <= End.y; i++)
		{
			for (int j = Start.x; j <= End.x; j++)
			{
				if (i == Start.y || i == End.y || j == Start.x || j == End.x)
				{
					image.at<Vec3b>(i, j)[0] = i;
					image.at<Vec3b>(i, j)[1] = j;
					image.at<Vec3b>(i, j)[2] = (i + j) / 2;
				}

			}
		}
	}

}
void YKcircle(Mat &image, Point heart, int ridus,siZe flog)
{
	for (int i = 0; i <= image.rows; i++)
	{
		for (int j = 0; j < image.cols; j++)
		{
			if(flog==0)
			{ 
			if ((j - heart.x)*(j - heart.x) + (i - heart.y)*(i - heart.y) <= ridus* ridus)
			{
				image.at<Vec3b>(i, j)[0] = i;
				image.at<Vec3b>(i, j)[1] = j;
				image.at<Vec3b>(i, j)[2] = (i + j) / 2;
			}
             }
			else if (flog == 1)
			{
				if (((j - heart.x)*(j - heart.x) + (i - heart.y)*(i - heart.y) >=ridus* ridus-ridus)&&((j - heart.x)*(j - heart.x) + (i - heart.y)*(i - heart.y) <= ridus * ridus + ridus))
				{
					image.at<Vec3b>(i, j)[0] = i;
					image.at<Vec3b>(i, j)[1] = j;
					image.at<Vec3b>(i, j)[2] = (i + j) / 2;
				}
			}
		}
	}

}
int main()
{

	Mat image(1024, 1024, CV_8UC3);
	
	siZe x, y, x1, y1,flog,ridus;
	cout << "请输入矩形的起点终点和标识" << endl;
	cin >> x >> y >> x1 >> y1>>flog;
    Point start(x,y), end(x1,y1);
	YKrectangle(image, start, end, flog);
	cout << "请输入圆形的圆心和半径还有标识" << endl;
	cin >> x >> y >>ridus>> flog ;
	Point heart(x, y);
	YKcircle(image, heart, ridus,flog);
	imshow("1", image);
	waitKey(0);
	return 0;
}

发布了29 篇原创文章 · 获赞 24 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/yyk219/article/details/81362721