1.
#include
#include
using namespace std;
int main()
{
cv::Mat m(100, 100, CV_8UC3);
m = 0;
//画个圆
cv::circle(m, cv::Point(50, 50), 20, cv::Scalar(255, 0, 0));
cv::namedWindow("circle", cv::WINDOW_AUTOSIZE);
cv::imshow("circle", m);
cv::waitKey(0);
return 0;
}
2.
#include
#include
using namespace std;
int main()
{
cv::Mat m(100, 100, CV_8UC3);
m = 0;
cv::Scalar color = cv::Scalar(0, 255, 0);
for (int i = 20; i <= 40; i++)
{
for (int j = 5; j <= 20; j++)
{
m.at(i, j)[1] = 255;
}
}
cv::namedWindow("output", cv::WINDOW_AUTOSIZE);
cv::imshow("output", m);
cv::waitKey(0);
return 0;
}
3.
#include
#include
using namespace std;
int main()
{
cv::Mat m(100, 100, CV_8UC3);
m = 0;
for (int i = 20; i <= 40; i++)
{
for (int j = 5; j <= 20; j++)
{
m.ptr(i, j)->val[1] = 255;
}
}
cv::namedWindow("output", cv::WINDOW_AUTOSIZE);
cv::imshow("output", m);
cv::waitKey(0);
return 0;
}
4.
#include
#include
using namespace std;
int main(int argc, const char** argv)
{
cv::Mat m(210, 210, CV_8UC1);
m = 0;
for (int i = 1; i < 11; i++)
{
cv::Mat mask(210 - 20 * i, 210 - 20 * i, CV_8UC1);
mask = 1;
cv::Rect rest(10 * i, 10 * i, 210 - 20 * i, 210 - 20 * i);//定义一个框
cv::Mat tmp = m(rest);//这个tmp是个引用
tmp.setTo((i + 1) * 20);//setTo能进行值的设置
}
cv::namedWindow("output", cv::WINDOW_AUTOSIZE);
cv::imshow("output", m);
cv::waitKey(0);
return 0;
}
5.
#include
#include
using namespace std;
int main(int argc, const char** argv)
{
cv::Mat src;
src = cv::imread("C:/Users/duoduoda/Desktop/dog.jpg");
cv::Rect rect1(5, 10, 20, 30);
cv::Rect rect2(50, 60, 20, 30);
cv::Mat tmp1 = src(rect1);
cv::Mat tmp2 = src(rect2);
cv::bitwise_not(tmp1,tmp1);
cv::bitwise_not(tmp2, tmp2);
cv::imshow("output",src);
cv::waitKey(0);
return 0;
}
6.
#include
#include
using namespace std;
int main(int argc, const char** argv)
{
cv::Mat src;
src = cv::imread("C:/Users/duoduoda/Desktop/dog.jpg");
vector b_g_r;
cv::split(src, b_g_r);
cv::imshow("input",src);
//a.
cv::imshow("output", b_g_r[1]);
//b.
cv::Mat clone1 = b_g_r[1].clone();
cv::Mat clone2 = b_g_r[1].clone();
//c.
double maxNum, minNum;
cv::minMaxLoc(b_g_r[1] ,&minNum, &maxNum);
cout << "maxNum:" << maxNum << " " << "minNum:" << minNum << endl;
//d.
uchar thresh = (uchar)(maxNum - minNum) / 2;
clone1 = (uchar)(thresh);
cv::imshow("clone1:", clone1);
//e.
clone2 = 0;
cv::compare(b_g_r[1], clone1, clone2, cv::CMP_GE);
cv::imshow("clone2:", clone2);
//f.
cv::subtract(b_g_r[1], thresh / 2, b_g_r[1], clone2);
cv::imshow("substract:", clone2);
cv::waitKey(0);
return 0;
}