opencv3常用代码示例
文章平均质量分 74
龚慧林
积极、乐观、努力
展开
-
载入图像并且显示
#include using namespace cv;void main( ){ const char *fileName = "1.jpg"; Mat srcImage = imread("1.jpg"); imshow(fileName,srcImage); waitKey(0);}翻译 2016-11-18 14:24:00 · 310 阅读 · 0 评论 -
载入图片并显示
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"using namespace cv;int main( ){ const char *fileName = "1.jpg"; Mat srcImage = cv::imread(fileName); if( !srcIma翻译 2016-11-18 19:21:59 · 243 阅读 · 0 评论 -
对图像的缩放与旋转
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"int main( ){ // 读取图像 cv::Mat srcImage = cv::imread("..\\images\\flower3.jpg"); // 图像读取是否成功 if( !srcImage.data ) r翻译 2016-11-18 19:23:51 · 630 阅读 · 0 评论 -
Mat类简略结构
class CV_EXPORTS Mat{public:int flags; // 标志位int dims ; // 数组的维数int rows,cols; uchar *data ; // 指向数据的指针int * refcount ; // 指针的引用计数器 阵列指向用户分配的数据时,当指针为 NULL};翻译 2016-11-18 19:29:10 · 277 阅读 · 0 评论 -
新建 Mat 类对象方法示例
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include int main( ){ cv::Mat image1; cv::Mat image2( 6, 6, CV_8UC1 ); cv::Mat image3( cv::Size(7,7), CV_8UC翻译 2016-11-18 19:34:31 · 430 阅读 · 0 评论 -
Mat 类常用函数用法示例
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include int main( ){ cv::Mat Image1( 10, 8, CV_8UC1, cv::Scalar(5) ); // 矩阵行列数获取 std::cout << "Image1 row: " << I转载 2016-11-18 19:36:45 · 608 阅读 · 0 评论 -
Mat转换为IplImage 类型和CvMat 类型
cv::Mat img; CvMat cvMatImg = img; IplImage IplImg = img;转载:http://blog.csdn.net/zhuwei1988转载 2016-11-18 19:39:04 · 337 阅读 · 0 评论 -
IplImage 类型和 CvMat 类型转换为 Mat 类型
IplImage *IplImg = cvLoadImage("fruits.jpg");Mat img(IplImg, true);转载:http://blog.csdn.net/zhuwei1988转载 2016-11-18 19:40:26 · 278 阅读 · 0 评论 -
图像读取、转为灰度图像、均值平滑、显示保存操作
#include #include #include #include int main( ){ // 读取图像源 cv::Mat srcImage = cv::imread("..\\images\\pool.jpg"); if( srcImage.empty() ) return -1; // 转为灰度图像 cv::Mat srcGray; cv转载 2016-11-18 19:43:01 · 972 阅读 · 1 评论 -
图像灰度化
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"int main( ){ // 读取源图像并转化为灰度图像 cv::Mat srcImage = cv::imread("l.jpg"); if( !srcImage.data ) return 1; // 读取转载 2016-11-18 19:44:08 · 333 阅读 · 0 评论 -
remap 重映射
#include #include #include #include int main(){ cv::Mat srcImage = cv::imread("1.jpg"); if(!srcImage.data) return -1; // 输出矩阵定义 cv::Mat resultImage(srcImage.s转载 2016-11-18 19:45:21 · 445 阅读 · 0 评论 -
图像平移操作
# #include #include #include // 平移操作 图像大小不变cv::Mat imageTranslation1(cv::Mat & srcImage, int xOffset, int yOffset){ int nRows = srcImage.rows; int nCols = srcImage.cols;转载 2016-11-18 19:47:11 · 1282 阅读 · 2 评论 -
图像缩放操作
#include #include #include #include using namespace cv;// 基于等间隔提取图像缩放cv::Mat imageReduction1(cv::Mat &srcImage, float kx, float ky){ // 获取输出图像分辨率 int nRows = cvRound(srcImag转载 2016-11-18 19:48:39 · 589 阅读 · 1 评论 -
旋转变换
#include #include #include #include #include using namespace cv;using namespace std;cv::Mat angelRotate(cv::Mat& src, int angle){ // 角度转换 float alpha = angle * CV_PI / 180;转载 2016-11-18 19:49:50 · 331 阅读 · 0 评论 -
图像翻转
#include #include #include #include #include using namespace cv;using namespace std;int main(){cv::Mat srcImage = cv::imread("..\\images\\pool.jpg");if (!srcImage.data)转载 2016-11-18 19:50:46 · 260 阅读 · 0 评论 -
getRotationMatrix2D 函数
cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale ){ // 角度转换 angle *= CV_PI/180; // 计算旋转矩阵角度 double alpha = cos(angle)*scale; double beta = sin(angle)*scale; Mat M(2,转载 2016-11-18 19:51:34 · 2933 阅读 · 0 评论 -
图像仿射变换
#include #include #include #include using namespace cv;int main(){ // 读取图像及验证读入正确 cv::Mat srcImage = cv::imread("..\\images\\sea.jpg"); if(!srcImage.data) ret转载 2016-11-18 19:52:53 · 543 阅读 · 0 评论 -
VideoCapture 读取视频文件,显示视频(帧)信息
#include #include #include #include using namespace std;using namespace cv;int main(){ // 定义相关VideoCapture对象 VideoCapture capture; // 读取视频文件 capture.open("..\\images\\car.avi"); /转载 2016-11-18 19:54:08 · 9980 阅读 · 0 评论 -
图像质量评价,图片放大和缩小
#include #include #include #include using namespace cv;using namespace std;// PSNR 峰值信噪比计算 返回数值为30-50dB 值越大越好double PSNR(const Mat& I1, const Mat& I2){ cv::Mat s1; // 计算图像差|I转载 2016-11-18 19:57:13 · 1114 阅读 · 0 评论 -
鼠标事件示例
#include #include #include #include // 全局变量 cv::Mat srcImage;void MouseEvent(int event, int x, int y, int flags, void* data){ char charText[30]; cv::Mat tempImage, hsvImage; tempIma转载 2016-11-18 19:59:28 · 271 阅读 · 0 评论 -
利用 createTrackbar 进行二值化
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include //createTrackbar的回调响应函数void onChangeTrackBar (int pos,void* data){ // 强制类型转换 cv::Mat srcImage = *(cv::Mat*)(转载 2016-11-18 20:00:18 · 680 阅读 · 0 评论 -
Rect 选择感兴趣区域
#include #include #include // 全局变量源图像cv::Mat srcImage;// 方法1 利用Rect选择区域(100, 180, 150, 50)void regionExtraction(int xRoi, int yRoi, int widthRoi, int heightRoi ){ // 指定坐标区域提取 cv::Mat roi转载 2016-11-18 20:01:04 · 689 阅读 · 0 评论 -
鼠标按键获取感兴趣区域
#include #include #include #include using namespace cv;using namespace std;// 全局变量图像源cv::Mat srcImage;// 所选矩形区域 cv::Rect roiRect; // 起始点cv::Point startPoint; // 终止点cv::Point endPoint;转载 2016-11-18 20:02:28 · 772 阅读 · 0 评论 -
鼠标按键获取感兴趣区域 2
#include #include #include #include using namespace cv;using namespace std;// 全局变量图像源cv::Mat srcImage;// 所选矩形区域 cv::Rect roiRect; // 起始点cv::Point startPoint; // 终止点cv::Point endPoint;转载 2016-11-18 20:03:38 · 425 阅读 · 0 评论 -
初始化 Hilbert 矩阵
Mat H( 100, 100, CV_64F );for( int i = 0; i < H.rows; i++ ) for( int j = 0; j < H.cols; j ++ ) H.at(i,j) = 1. /(i+j +1);转载:http://blog.csdn.net/zhuwei1988转载 2016-11-18 20:04:39 · 444 阅读 · 0 评论 -
图像遍历反色处理,遍历多通道图片
#include #include #include using namespace cv;// 下标M.at(i,j) 方法1-1cv::Mat inverseColor1(cv::Mat srcImage){ cv::Mat tempImage = srcImage.clone(); int row = tempImage.rows; int col = tempImage转载 2016-11-18 20:05:47 · 885 阅读 · 1 评论 -
图像补运算:反色处理
cv::Mat inverseColor1(cv::Mat srcImage){ cv::Mat tempImage = srcImage.clone(); int row = tempImage.rows; int col = tempImage.cols; // 对各个像素点遍历进行取反 for (int i = 0; i < row; i++) { for (int j =转载 2016-11-18 20:06:54 · 2360 阅读 · 0 评论 -
图像补运算:ptr反色处理
cv::Mat inverseColor3(cv::Mat srcImage){ cv::Mat tempImage = srcImage.clone(); int row = tempImage.rows; // 将3通道转换为单通道 int nStep = tempImage.cols * tempImage.channels(); for(int i =转载 2016-11-18 20:08:07 · 320 阅读 · 0 评论 -
isContinuous 反色处理
cv::Mat inverseColor5(cv::Mat srcImage){ int row = srcImage.rows; int col = srcImage.cols; cv::Mat tempImage = srcImage.clone(); // 判断是否是连续图像,即是否有像素填充 if( srcImage.isContinuous() && tempImage.is转载 2016-11-18 20:11:39 · 725 阅读 · 0 评论 -
LUT 查表反色处理
cv::Mat inverseColor6(cv::Mat srcImage){ int row = srcImage.rows; int col = srcImage.cols; cv::Mat tempImage = srcImage.clone(); // 建立LUT 反色table uchar LutTable[256]; for (int i = 0; i < 256转载 2016-11-18 20:12:21 · 688 阅读 · 0 评论 -
算法计时
double tTime;tTime = (double)getTickCount();const int nTimes = 100;for(int i = 0; i < nTimes; i++){ // 待测试算法code}tTime = 1000*((double)getTickCount() - tTime)/getTickFrequency();tTime /=转载 2016-11-18 20:13:53 · 517 阅读 · 0 评论 -
单窗口显示多幅图像
#include #include #include #include using namespace cv;void showManyImages( const std::vector &srcImages, cv::Size imgSize ){ int nNumImages = srcImages.size(); cv::Size nSizeWindows; if(nN转载 2016-11-18 20:14:46 · 441 阅读 · 0 评论 -
RGB 转 HSV
#include #include #include #include int main(){ // 图像源读取及判断 cv::Mat srcImage = cv::imread("22.jpg"); if (!srcImage.data) return -1; cv::imshow("srcImage", srcImage); cv::M转载 2016-11-18 20:16:13 · 630 阅读 · 0 评论 -
文件名有规则情况读取
#include #include #include #include #include using namespace cv;using namespace std;int main(){ // 定义相关参数 const int num = 4; char fileName[50]; char windowName[50]; cv::Mat srcImage; for转载 2016-11-18 20:17:29 · 259 阅读 · 0 评论 -
文件名无规则情况读取
#include #include #include #include #include #include using namespace std;// LPCWSTR转stringstd::string WChar2Ansi(LPCWSTR pwszSrc){ int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NUL转载 2016-11-18 20:18:06 · 271 阅读 · 0 评论 -
OTSU 二值化的实现
#include #include #include "opencv2/highgui/highgui.hpp"#include "opencv2/opencv.hpp"using namespace std;using namespace cv;// 大均法函数实现int OTSU(cv::Mat srcImage){ int nCols = srcImage.cols; i转载 2016-11-18 20:19:19 · 397 阅读 · 0 评论 -
threshold 二值化的实现
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"int main( ){ // 读取源图像及判断 cv::Mat srcImage = cv::imread("..\\images\\hand1.jpg"); if( !srcImage.data ) return转载 2016-11-18 20:20:37 · 608 阅读 · 0 评论 -
adaptiveThreshold 阈值化的实现
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"int main( ){ // 图像读取及判断 cv::Mat srcImage = cv::imread("..\\images\\hand1.jpg"); if( !srcImage.data ) return转载 2016-11-18 20:21:16 · 878 阅读 · 0 评论 -
双阈值法的实现
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"int main( ){ // 图像读取及判断 cv::Mat srcImage = cv::imread("..\\images\\hand1.jpg"); if( !srcImage.data ) return转载 2016-11-18 20:22:42 · 6408 阅读 · 0 评论 -
半阈值法的实现
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include using namespace std;using namespace cv;int main( ){ // 读取源图像及判断 cv::Mat srcImage = cv::imread("..\\image转载 2016-11-18 20:23:29 · 1273 阅读 · 0 评论