opencv库练习--参考SLAM十四讲5.3
来源:互联网 发布:马东的软件 编辑:程序博客网 时间:2024/06/06 15:00
#include <iostream>
using namespace std;
#include <chrono>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
int main(int argc, char **argv)
{
cv::Mat image;
// image=cv::imread("ubuntu.png");
image=cv::imread(argv[1]);
if(image.data==nullptr){
cerr<<"文件"<<argv[1]<<"不存在."<<endl;
return 0;
}
cout<<"图像宽为(列):"<<image.cols<<",高为:"<<image.rows<<",通道数为:"<<image.channels()<<endl;
cv::imshow("image",image);//彩色图类型一般CV_8UC3,灰度图CV_8UC1
cv::waitKey(0);
chrono::steady_clock::time_point t1=chrono::steady_clock::now();
for(int i=0;i<image.rows;i++){
cv::Vec3b *p=image.ptr<cv::Vec3b>(i);
for(int j=0;j<image.cols;j++){
for(int k=0;k!=image.channels();k++){
uchar data =p[j][k];//对每一通道进行访问
}
}
}
//算一下遍历所有像素点一张图的时间
chrono::steady_clock::time_point t2=chrono::steady_clock::now();
chrono::duration<double> time_used =chrono::duration_cast<chrono::duration<double>>(t2-t1);
cout<<"遍历图像时间"<<time_used.count()<<" 秒"<<endl;
cv::Mat image_another =image;
image_another(cv::Rect(0,0,100,100)).setTo(255);//将左上角100*100至255,白色,最亮。
cv::imshow("image_another",image_another);
cv::waitKey(0);
cv::Mat image_clone=image.clone();
image_clone(cv::Range(0,100),cv::Range::all()).setTo(0);
cv::imshow("image_clone",image_clone);
cv::waitKey(0);
/*下面试试cv中对图像的一些处理操作*/
cv::Mat gray_image(600,800,CV_8UC1);
cv::Mat color_image(600,800,CV_8UC3);
for(int i=0;i<gray_image.rows;i++){
uchar *p=gray_image.ptr<uchar>(i);
for(int j=0;j<gray_image.cols;j++){
p[j]=(i+j)%255;//往右下有黑渐变白的特征且有重复出现
}
}
cv::imshow("gray_image",gray_image);
for(int i=0;i<color_image.rows;i++){
cv::Vec3b *p=color_image.ptr<cv::Vec3b>(i);
for(int j=0;j<color_image.cols;j++){
p[j][0]=i%255;//Blue也可以采用rand函数试试
p[j][1]=j%255;//Green
p[j][2]=0;//Red
}
}
cv::imshow("color_image",color_image);
cv::waitKey(0);
return 0;
}
using namespace std;
#include <chrono>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
int main(int argc, char **argv)
{
cv::Mat image;
// image=cv::imread("ubuntu.png");
image=cv::imread(argv[1]);
if(image.data==nullptr){
cerr<<"文件"<<argv[1]<<"不存在."<<endl;
return 0;
}
cout<<"图像宽为(列):"<<image.cols<<",高为:"<<image.rows<<",通道数为:"<<image.channels()<<endl;
cv::imshow("image",image);//彩色图类型一般CV_8UC3,灰度图CV_8UC1
cv::waitKey(0);
chrono::steady_clock::time_point t1=chrono::steady_clock::now();
for(int i=0;i<image.rows;i++){
cv::Vec3b *p=image.ptr<cv::Vec3b>(i);
for(int j=0;j<image.cols;j++){
for(int k=0;k!=image.channels();k++){
uchar data =p[j][k];//对每一通道进行访问
}
}
}
//算一下遍历所有像素点一张图的时间
chrono::steady_clock::time_point t2=chrono::steady_clock::now();
chrono::duration<double> time_used =chrono::duration_cast<chrono::duration<double>>(t2-t1);
cout<<"遍历图像时间"<<time_used.count()<<" 秒"<<endl;
cv::Mat image_another =image;
image_another(cv::Rect(0,0,100,100)).setTo(255);//将左上角100*100至255,白色,最亮。
cv::imshow("image_another",image_another);
cv::waitKey(0);
cv::Mat image_clone=image.clone();
image_clone(cv::Range(0,100),cv::Range::all()).setTo(0);
cv::imshow("image_clone",image_clone);
cv::waitKey(0);
/*下面试试cv中对图像的一些处理操作*/
cv::Mat gray_image(600,800,CV_8UC1);
cv::Mat color_image(600,800,CV_8UC3);
for(int i=0;i<gray_image.rows;i++){
uchar *p=gray_image.ptr<uchar>(i);
for(int j=0;j<gray_image.cols;j++){
p[j]=(i+j)%255;//往右下有黑渐变白的特征且有重复出现
}
}
cv::imshow("gray_image",gray_image);
for(int i=0;i<color_image.rows;i++){
cv::Vec3b *p=color_image.ptr<cv::Vec3b>(i);
for(int j=0;j<color_image.cols;j++){
p[j][0]=i%255;//Blue也可以采用rand函数试试
p[j][1]=j%255;//Green
p[j][2]=0;//Red
}
}
cv::imshow("color_image",color_image);
cv::waitKey(0);
return 0;
}
阅读全文
0 0
- opencv库练习--参考SLAM十四讲5.3
- Sophus库练习(李群李代数)---参考SLAM十四讲4.4
- opencv库图像特征提取与匹配--参考SLAM十四讲7.2
- ceres库最小二乘问题求解---参考SLAM十四讲6.3
- 视觉SLAM十四讲调试
- 《视觉SLAM十四讲》内容摘要
- SLAM十四讲第三章Eigen库学习笔记
- Eigen集合模块学习(角轴,位姿,欧拉角,四元数)--参考SLAM十四讲3.6
- 《视觉SLAM十四讲》书籍图片资源
- 《视觉SLAM十四讲》书籍图片资源
- 自学《SLAM十四讲》——第二讲
- 视觉SLAM十四讲-第九讲例程运行出错
- 高翔《》《视觉SLAM十四讲》从理论到实践
- 《视觉SLAM十四讲》学习笔记(一)
- 《视觉SLAM十四讲》之开源库的安装
- 视觉SLAM十四讲 第六章程序出错(转载)
- 半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 1 基础理论
- 《视觉SLAM十四讲》学习系列(1)—经典视觉SLAM框架
- Linux CentOS配置yum源(阿里yum)
- ffmpeg常用编码参数含x264
- RabbitMQ应用实例Python版-监控
- 快捷键备忘录
- 【数据结构】树链剖分总结
- opencv库练习--参考SLAM十四讲5.3
- BZOJ3732: Network
- Twitch如何实现转码比FFmpeg性能提升65%?(下)
- Ubuntu 执行apt-get update时 Problem executing scripts APT::Update: 错误
- C语言的发展历史
- caffe中的Accuracy
- 计算机单位
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release
- 算法导论<2、渐近符号、递归及解法>