OpenCV像素操作和图形绘制
像素操作
#include<iostream>
#include<opencv2/opencv.hpp> using namespace std;
using namespace cv; int main(int argc, char**argv)
{
Mat src, src_gray;
src= imread("b.jpg");
if (src.empty())
{
cout << "could not load img.." << endl;
return -;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
/*
cvtColor(src, src_gray, CV_BGR2GRAY);
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", src_gray);
int height= src_gray.rows;
int width = src_gray.cols;
for (int row = 0; row < height; ++row)
{
for (int col = 0; col < width; ++col)
{
int gray = src_gray.at<uchar>(row, col);
src_gray.at<uchar>(row, col) = 255 - gray;
}
} imshow("output", src_gray);
*/
Mat dst;
dst.create(src.size(), src.type()); int height = src.rows;
int width = src.cols;
int chn = src.channels(); for(int row=;row<height;++row)
for (int col = ; col < width; ++col)
{
if (chn == )
{
int gray = src_gray.at<uchar>(row, col);
src_gray.at<uchar>(row, col) = - gray;
}
else if(chn==)
{
dst.at<Vec3b>(row, col)[] = - src.at<Vec3b>(row, col)[];
dst.at<Vec3b>(row, col)[] = - src.at<Vec3b>(row, col)[];
dst.at<Vec3b>(row, col)[] = - src.at<Vec3b>(row, col)[]; }
}
//bitwise_not(src, dst);
imshow("dst", dst);
waitKey();
return ;
}
直线,举行,圆形,椭圆的绘制与随机直线随机颜色的绘制
#include<iostream>
#include<opencv2/opencv.hpp> using namespace std;
using namespace cv; Mat src;
const char *drawdemo_win = "draw shapes and text demo";
void MyLines();
void MyRectangle();
void MyEclipse();
void MyCircle();
void MyPolygon();
void RandomLineDemo(); int main(int argc, char **argv)
{
src = imread("b.jpg");
if (src.empty())
{
cout << "Load image failed" << endl;
return -;
}
imshow("input image", src);
//MyLines();
//MyRectangle();
//MyEclipse();
//MyCircle();
//MyPolygon();
//MyPolygon();
//putText(src, "Hello OpenCV", Point(300, 300), CV_FONT_HERSHEY_COMPLEX, 1.0, Scalar(12, 255, 255), 3, 8);
RandomLineDemo();
imshow("draw", src);
waitKey(); return ;
} void MyLines()
{
Point p1 = Point(, );
Point p2;
p2.x = ;
p2.y = ;
Scalar color = Scalar(, , );
line(src, p1, p2, color, , LINE_AA);
} void MyRectangle()
{
Rect rect = Rect(, , , );
Scalar color = Scalar(, , );
rectangle(src, rect, color, , LINE_8);
} void MyEclipse()
{
Scalar color = Scalar(, , );
ellipse(src, Point(src.cols / , src.rows / ), Size(src.cols / , src.rows / ), , , , color, , LINE_8); } void MyCircle()
{
Scalar color = Scalar(,, );
Point center = Point(src.cols / , src.rows / );
circle(src, center, ,color, , );
} void MyPolygon()
{
Point pts[][];
pts[][] = Point(, );
pts[][] = Point(, );
pts[][] = Point(, );
pts[][] = Point(, );
pts[][] = Point(, ); const Point *ppts[] = { pts[] };
int npt[] = { }; Scalar color = Scalar(, , );
fillPoly(src, ppts, npt, , color, );
} void RandomLineDemo()
{
RNG rng();
Point pt1;
Point pt2;
Mat bg = Mat::zeros(src.size(), src.type());
namedWindow("Random Line Demo", CV_WINDOW_AUTOSIZE);
for(int i=;i<;++i)
{
pt1.x = rng.uniform(, src.cols);
pt2.x = rng.uniform(, src.cols);
pt1.y = rng.uniform(, src.rows);
pt2.y = rng.uniform(, src.rows);
Scalar color = Scalar(rng.uniform(, ), rng.uniform(, ), rng.uniform(, ));
if (waitKey() > )
break;
line(bg, pt1, pt2, color, , );
imshow("Random Line Demo", bg);
}
}


OpenCV像素操作和图形绘制的更多相关文章
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
- C# 操作Excel图形——绘制、读取、隐藏、删除图形
简介 本篇文章将介绍C# 如何处理Excel图形相关的问题,包括以下内容要点: 1.绘制图形 1.1 绘制图形并添加文本到图形 1.2 添加图片到图形 1.3 设置图形阴影效果 1.4 设置图形透明度 ...
- 【opencv系列04】OpenCV4.X图形绘制
一. 基本图形绘制 1. 基本函数与参数 cv2.line(): 线 cv2.circle(): 圆 cv2.rectangle(): 矩形 cv2.ellipse(): 椭圆 cv2.putText ...
- HTML5 canvas图像绘制方法与像素操作属性和方法
图像绘制方法 drawImage() 向画布上绘制图像.画布或视频 像素操作属性和方法 width 返回 ImageData ...
- Opencv中图像的遍历与像素操作
Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...
- opencv中对图像的像素操作
1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...
- python opencv:像素操作
图片的像素 像素:组成图片的单位 RGB:颜色由 RGB三种颜色组成 颜色深度:对于8bit的颜色深度来说,它可以表示的颜色范围是 0 ~ 255,对于RGB图片来说,8位颜色深度可以表示 (2^8) ...
- OpenCV基础篇之像素操作对照度调节
程序及分析 /* * FileName : contrast.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 29 ...
- 图形绘制 Canvas Paint Path 详解
图形绘制简介 Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...
随机推荐
- 【LOJ#3145】[APIO2019]桥梁(分块,并查集)
[LOJ#3145][APIO2019]桥梁(分块,并查集) 题面 LOJ 题解 因为某个\(\text{subtask}\)没判\(n=1\)的情况导致我自闭了很久的题目... 如果没有修改操作,可 ...
- kali渗透综合靶机(十七)--HackInOS靶机
kali渗透综合靶机(十七)--HackInOS靶机 靶机下载地址:https://www.vulnhub.com/hackinos/HackInOS.ova 一.主机发现 1.netdiscover ...
- QT+OpenGL(01)--实现三角形渲染
1.openglwidget.ui <ui version="4.0"> <author/> <comment/> <exportmacr ...
- netCore3.0+webapi到前端vue(后端)
第一步创建api项目 创建完成启动F5!! 如图 数据库我用的是mysql 用ef操作数据 开发环境:Win10 + VS2019Mysql服务器版本:8.0.16 1.下载并安装插件(必备) MyS ...
- js函数定义及一些说明
1.javascript定义函数的三种方法一.function语句//这个方法比较常用function fn(){ alert("这是使用function语句进行函数定义");}f ...
- 如何使用Charles让手机访问PC自定义域名?
需求:移动端访问PC上的自定义域名,如在Nginx上配置的域名 如vv.zzcloud.com这个域名在pc上是通过host映射的方式访问,现在需要在手机上访问到这个域名. 工具:Charles代 ...
- Linux磁盘系统——磁盘系统简介
Linux磁盘系统——磁盘系统简介 摘要:本文主要学习了Linux系统中有关磁盘的一些知识. 文件系统 说明 硬盘是用来存储数据的,可以将其想象成柜子,只不过柜子是用来存储衣物的.新买来的硬盘,通常要 ...
- Linux 初识Libevent网络库
初识Libevent libevent是用c写的高并发网络io库,只要有文件描述符,就都可使用libevent. libevent使用回调函数(callback) . 有了libevent,网络编程我 ...
- linux 广播和组播
广播和组播 广播,必须使用UDP协议,是只能在局域网内使用,指定接收端的IP为*.*.*.255后,发送的信息,局域网内的所有接受端就能够接到信息了. 广播的发送端代码 #include <st ...
- linux 的 expect 自动交互
https://www.jianshu.com/p/0194cbd70d39 https://www.cnblogs.com/saneri/p/10819348.html 参考 expect是一个自 ...